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?
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>
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)?{ p>
///? 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); p> //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 p> 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?10;?$i++){ //Color de ruido $noiseColor?=?imagecolorallocate( ?self::$_image,? ?mt_rand(150,225),? ?mt_rand(150,225 ),? ?mt_rand(150,225) ?); para($j?=?0;?$j?5;? $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