La Red de Conocimientos Pedagógicos - Currículum vitae - 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-255.

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;?php

/. ** *?Código de verificación de seguridad*? *?Se requiere código de verificación seguro: el texto del código de verificación está distorsionado, rotado, usando diferentes fuentes y agregando 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 el código de verificación está torcido y rotado, y se considera que la fuente tiene 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?lt; cmpan(at)qq.comgt; ?NUEVO ?BSD *?@link?/YL_Security_Secoder *?@link?/docs/yl/security/secoder */

clase?YL_Security_Secoder?{

/**

?*?El subíndice de la sesión del código de verificación

?*?

?*?@var?string

?* /

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

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

/**

?*? Los caracteres utilizados en el código de verificación, 01IO, son fáciles de confundir, se recomienda no usarlos

?*

?*?@var?string

?*/

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

public?static?$ fontSize?=?25;?//?Tamaño de fuente del código de verificación (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; /?Ancho de la imagen del código de verificación

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

public ?static?$bg?=?array(243,?251,?254);?//?Background

protected?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 y guarde el valor del código de verificación en la sesión

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

?*/

public?static?function?entry() ?{

///?Ancho de la imagen (px)

self::$imageL?||?self ::$imageL?=?self::$length?*?self ::$fontSize?*?1.5 ?self::$fontSize*1.5;?

///?Altura de la imagen (px)

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

//Crear una imagen

?self::$imageL?x?self::imagen de $imageH?

self::$_image?=?imagecreate(self::$imageL, ?self::$imageH);?

///?¿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 fuentes aleatorias para el código de verificación?

$ttf?=? ?.?'/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 código de verificación

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

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

para?($i?=?0;?$ilt;self::$longitud;?$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('',?$código) ;?/ /?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('Cache -Control: ?post-check=0,?pre-check=0',?false

encabezado);

r('Pragma:?no-cache');

header("content-type:?image/png");

//Imagen de salida

imagepng(self::$_image);?

imagedestroy(self::$_image);

}

/**?

?*?Dibuja una curva de función seno aleatoria compuesta por dos conectadas entre sí como una línea de interferencia (puedes cambiarla a una función de curva más atractiva)? *?¿Por qué olvidaste las fórmulas matemáticas en la escuela secundaria? Escríbelo

?* Fórmula analítica de la función seno: 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, el múltiplo del estiramiento y compresión longitudinal)

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

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

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

?*

?*/

protected?static?function?_writeCurve ()?{

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

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

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

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

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

$px1?=?0;?//?Posición inicial de la abscisa de la curva

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

para?($px=$px1;?$pxlt;=$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);

mientras? ($i?gt;?0)?{

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

$i--;

}

}

}

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

$f?=?mt_rand( -self::$imagenH/4,?self::$imagen

H/4); //?Desplazamiento de la dirección del eje X

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

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

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

$px1?=?$px2;

$px2?=?self::$imageL ;

¿para?($px=$px1;?$pxlt;=$px2;?$px=$px ?0.9)?{

si?($w!= 0 )?{

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

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

while?($i?gt;?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--;

}

}

}

}

/**

? *?Hua Za Click

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

?*/

protected?static?function?_writeNoise( )?{

for($i?=?0;?$i?lt;?10;?$i ){

//Color de ruido

$noiseColor ?=?imagecolorallocate(

?self::$_image,?

?mt_rand(150,225),?

?mt_rand(150,225) , ?

?mt_rand(150,225)

?);

for($j?=?0;?$j?lt;?5 ;?$ j )?{

//Dibujar ruido

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

);

}

}

}

/**

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

? *

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

?*?@return?boo

l?¿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;

}

//p>

//sesión?Expired

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

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

p>

return?false;

}

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

retorno?true;

}

retorno?false;

}

}

//?useage

/*

YL_Security_Secoder::$useNoise?=?false;?//?Cambia 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