Red de conocimiento del abogados - Respuesta jurídica de la empresa - Cómo generar imágenes con estilo de texto en negrita o cursiva en PHP

Cómo generar imágenes con estilo de texto en negrita o cursiva en PHP

El texto en negrita o cursiva se puede controlar usando funciones de PHP. ¿Creo que desea generar una imagen de código de verificación?

Si desea generar un código de verificación, ¿hay varias funciones para ello? la imagen? Puedes considerar

imagecreate($length,$height) para crear una imagen. Los parámetros son el ancho y el alto de la imagen

imagecolorallocate($image,$r). ,$g,$b) para establecer el color de fondo, r b g son los parámetros rgb de tres colores de la imagen. Esto puede determinar el color de fondo aleatorio pasando un número aleatorio de 0 a 255. También se puede generar el color de fuente.

imagettftext($_image,$fontSize,?mt_rand (-40,?70),?$codeNX,$fontSize*1.5,$_color,?$ttf,?$code[$i]); Escribe texto aleatorio, aquí tienes que escribirlo palabra por palabra. Entonces esta función se llama en un bucle.

Baidu encontró una clase... de la siguiente manera

/. ** *?Código de verificación de seguridad*? *?El código de verificación seguro requiere: El texto del código de verificación está torcido y rotado, se utilizan diferentes fuentes y se agregan códigos de interferencia. *? Si usa chino para el código de verificación (no estoy aquí, puede cambiarlo a chino si está interesado), la seguridad será mejor, pero la distorsión y rotación del código de verificación son las principales, y las fuentes utilizadas. Se considera que ha sido distorsionado, ya no le agregaré un pie torcido.

*?Las propiedades configurables son todas variables simples e intuitivas, por lo que no tengo que lidiar con un montón de definidores/obtendores* *?@author?Liushui Mengchun? *?@copyright? ¿NUEVO? BSD *?@link?/YL_Security_Secoder *?@link?/docs/yl/security/secoder */

clase?YL_Security_Secoder?{

/**

?*?Subíndice de sesión del código de verificación

?*?

?*?@var?string

?*/

public?static?$seKey?=?'sid.sekey.ylans.cn';

public?static?$expire?=?3000;?//?Tiempo de vencimiento del código de verificación (s)

/**

?*?Caracteres utilizados en el código de verificación, 01IO es fácil de confundir, se recomienda no usarlo

?*

?*?@var?string

?*/

public?static?$codeSet?=?'346789ABCDEFGHJKLMNPQRTUVWXY';

public?static?$fontSize ?=?25;?//?Código de verificación tamaño de fuente (px)

public?static?$useCurve?=?true;//?Si se debe dibujar una curva de confusión

public?static?$useNoise?=?true;//?Si se debe agregar ruido

public?static?$imageH?=?0;//?Código de verificación ancho de imagen

public?static?$imageL?=?0;//?Longitud de la imagen del código de verificación

public?static?$length?=?4;//?Dígitos del código de verificación

público? static?$bg?=?array(243,?251,?254);?//?Fondo

protegido?static?$_image?=?null;?/ /?Ejemplo de imagen del código de verificación

protected?static?$_color?=?null;?//?Color de fuente del código de verificación

/**

? *?Ingrese el código de verificación e ingrese El valor del código de verificación se guarda en la sesión

?*?El formato del código de verificación guardado en la sesión es:?$_SESSION[self::$seKey ]?=?array('code'?=>?' Valor del código de verificación',?'time'?=>?'Hora de creación del código de verificación');

?*/

public?static?function?entry()?{

///?Ancho de imagen (px)

self::$imageL?||?self::$imageL? =?self::$longitud?*?self::$ fontSize?*?1.5?+?self::$fontSize*1.5;?

///?Altura de la imagen (px)

self::$imageH?||?self: :$imageH?=?self::$fontSize?*?2;

//Crear una imagen de ?self::$imageL ?x?self::$imageH?

self::$_image?=?imagecreate(self::$imageL,?self::$ima

geH);?

//¿Establecer el fondo?

imagecolorallocate(self::$_image,?self::$bg[0],?self::$bg[ 1 ],?self::$bg[2]);?

//Código de verificación fuente color aleatorio

self::$_color?=?imagecolorallocate(self:: $ _image,?mt_rand(1,120),?mt_rand(1,120),?mt_rand(1,120));

///?¿Usar fuente aleatoria para el código de verificación?

$ttf?= ?dirname (__FILE__)?.?'/ttfs/'?.?mt_rand(1,?20)?.?'.ttf';?

if?(self::$useNoise)?{

///? Ruido de pintura

self::_writeNoise();

}?

if?(self::$useCurve ) ?{

// Dibujar líneas de interferencia

self::_writeCurve();

}

// Dibujar verificación code

$code?=?array();?//?Código de verificación

$codeNX?=?0;?//?Margen izquierdo del enésimo carácter de la verificación código

para?($i?=?0;?$i

$código[$i]?=? self: :$codeSet[mt_rand(0,?27)];

$codeNX?+=?mt_rand(self::$fontSize*1.2,?self::$fontSize*1.6);

//Escribe un carácter de código de verificación

imagettftext(self::$_image,?self::$fontSize,?mt_rand(-40,?70),?$codeNX,? self: :$fontSize*1.5,?self::$_color,?$ttf,?$code[$i]);

}

//Guardar código de verificación

isset($_SESSION)?||?session_start();

$_SESSION[self::$seKey]['código']?=?join('',?$ code) ;?//?Guardar el código de verificación en la sesión

$_SESSION[self::$seKey]['time']?=?time();?//?Hora de creación del código de verificación

header('Cache-Control:?privado,?max-age=0,?no-store,?no-cache,?must-revalidate');

header( 'Caché -Control:?post-check=0,?pre-check=0',?false

header('Pragma:?no-cache'); header( "tipo de contenido:?imagen/png");

//Imagen de salida

imagepng(self::$_image);?

imagedestroy( self::$_image);

}

/**?

?*?Dibuja una línea con dos líneas conectadas a una

¿Utiliza una curva de función seno aleatoria como línea de interferencia (puede cambiarla a una función de curva más atractiva? Fórmula analítica: y=Asin(ωx+φ)+b

?*?La influencia de cada valor constante en la imagen de la función:

?*A: determina el valor máximo (es decir, estiramiento longitudinal, compresión múltiple)

?*b: indica la relación posicional o la distancia del movimiento longitudinal de la forma de onda en el eje Y (más más o menos)

?*φ: Determina la posición de la forma de onda y la relación del eje X o distancia de movimiento lateral (izquierda más derecha menos)

?*ω: Determinar el período (período positivo mínimo T=2π/∣ω∣)

?*

?*/

protegido ?static?function?_writeCurve()?{

$A?=?mt_rand(1,?self::$imageH/2);? //Amplitud

$b ?=?mt_rand(-self::$imageH/4,?self::$imageH/4);//?Desplazamiento del eje Y

$f?=?mt_rand(-self::$ imageH/4,?self::$imageH/4);//?Desplazamiento del eje X

$T?=? mt_rand(self::$imageH*1.5,?self::$imageL* 2);?//?Period

$w?=?(2*?M_PI)/$T;

$px1?=?0;?//?El inicio posición de la abscisa de la curva

$px2?=?mt_rand(self::$imageL/2,?self::$imageL? *?0.667);?//?Posición final de la curva abscisa?

para?($px=$px1;?$px<=$px2;?$px=$px+?0.9)?{

si?($w! =0)?{

$py?=?$A?*?sin($w*$px?+?$f)+? $b?+?self::$imageH/2; ?//?y?=?Asin(ωx+φ)?+?b

$i?=?(int)?((self ::$fontSize?-?6)/4);

while?($i?>?0)?{

imagesetpixel(self::$_image,?$px ?+?$i,?$py?+?$ i,?self::$_color);?/?//?El rendimiento de dibujar píxeles aquí es mucho mejor que imagettftext e imagestring

$i--; >

}

}

$A?=?mt_rand(1,?self::$imageH/2 ?//?Amplitud

$f?=?mt_rand(-self::$imageH/4,?self::$imageH/4);//?Desplazamiento de dirección del eje X

$T?=?mt_rand(self ::$imageH*1.5,?self::$imageL*2);?//?Period

$w?=?(2*? M_PI)/$T

$b?=?$py?-?$A?*?sin($w*$px?+?$f)?-?self::$imageH/ 2;

$px1? =?$px2;

$px2?=?self::$imageL;

para?($px=$px1 ;?$px<=$px2;?$px =$px+?0.9)?{

¿si?($w!=0)?

{

$py?=?$A?*?sin($w*$px?+?$f)+?$b?+?self::$imageH/2;?//? y?=?Asin(ωx+φ)?+?b

$i?=?(int)?((self::$fontSize?-?8)/4);

while?($i?>?0)?{

imagesetpixel(self::$_image,?$px?+?$i,?$py?+?$i,?self ::$_color);?//?El rendimiento de dibujar píxeles aquí (mientras) es mucho mejor que dibujar píxeles a la vez usando el tamaño de fuente imagettftext e imagestring (sin este bucle while)

$ i--;

}

}

}

}

/**

?* ?Dibujar ruido

?*?Escribir letras o números de diferentes colores en la imagen

?*/

función?estática?protegida ?_writeNoise() ?{

for($i?=?0;?$i?

//Color de ruido

$noiseColor?=?imagecolorallocate(

?self::$_image,?

?mt_rand(150,225),?

?mt_rand(150,225 ),?

?mt_rand(150,225)

?);

para($j?=?0;?$j?

///? Ruido de pintura

imagestring(

self::$_image,

5,?

mt_rand(-10,?self::$imageL),?

mt_rand(-10,?self::$imageH),?

self: :$ codeSet[mt_rand(0,?27)],?//?El texto con ruido son letras o números aleatorios

$noiseColor

);

}

}

}

/**

?*?Verifique si el código de verificación es correcto

?*

?*?@param?string?$code?Código de verificación de usuario

?*?@return?bool?¿Es correcto el código de verificación de usuario?

?* /

public?static?function?check($code)?{

isset($_SESSION)?||?session_start();

// ?El código de verificación no puede estar vacío

if(empty($code)?||?empty($_SESSION[self::$seKey]))?{

return?false

}

//sesión?Expired

if(time()?-?$_SESSION[self::$seKey][ 'tiempo'] ?>?self::$expire)?{

unset($_SESSION[self::$seKey]);

return?false;

}

if($code?==?$_SESSION[self::$seKey]['code'])?{

return?true;

}

return?false;

}

}

//?uso

/*

YL_Security_Secoder::$useNoise?=?false;?//?Cambiar a verdadero si quieres estar más seguro

YL_Security_Secoder::$useCurve?=?true;

YL_Security_Secoder::entry();

*/

/*

//?Verificar código de verificación

if ?(!YL_Security_Secoder::check(@$_POST['secode']))?{

print?'error?secode';

}

*/

Este es el efecto