PHPPHP图形操作之生成图像验证码

归纳的验证码其实正是在图纸中输出了多少个字符,通过imagestring函数就能落到实处。

而是在拍卖上,为了使验证码越发的辽源,制止别的程序自动识别,因而平日供给对验证码实行部分振憾处理,平时会动用绘制1些噪点,苦恼线段,对输出的字符举行倾斜、扭曲等操作。

PHP,能够选取imagesetpixel绘制点来促成噪点干扰,可是只绘制二个点的效劳非常的小,由此这里常常会利用循环实行任意绘制。

例子:

<?php
$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//生成随机的验证码
$code = '';
for($i = 0; $i < 4; $i++) {  //4位数的验证码
$code .= rand(0, 9);
}
imagestring($img, 5, 10, 10, $code, $black);
//加入噪点干扰
for($i=0;$i<50;$i++) {
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black);  //imagesetpixel — 画一个单一像素,语法: bool imagesetpixel ( resource $image , int $x , int $y , int $color )
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green);
}
//输出验证码
header("content-type: image/png");
imagepng($img);  //以 PNG 格式将图像输出到浏览器或文件
imagedestroy($img);  //图像处理完成后,使用 imagedestroy() 指令销毁图像资源以释放内存,虽然该函数不是必须的,但使用它是一个好习惯。

?>

【小主,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢!】

相关文章