用画布生成验证码
步骤:
1、定义字符串;2、创建画布;3、颜色;4、填充区域;5、画噪点;6、画噪线;7、画文字;8、输出画布;9、销毁图像
<?php
//案例:生成验证码
header('content-type:image/png');
//字符串,去掉不容易识别的i,l,o,I,L,O
$str="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ0123456789" ;
//画布
$width=200;
$height=100;
$img=imagecreatetruecolor($width,$height);
//颜色
$color=imagecolorallocate($img, 0xcc,0xcc,0xcc);
//填充区域
imagefill($img, 0, 0, $color);
//画噪点
for($i=0;$i<100;$i++){
$color=imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100));
$x=rand(0,$width);
$y=rand(0,$height);
imagesetpixel($img, $x, $y, $color);
}
//画噪线
for($i=0;$i<30;$i++){
$color=imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100));
$x1=rand(0,$width);
$y1=rand(0,$height);
$x2=rand(0,$width);
$y2=rand(0,$height);
imageline($img, $x1, $y1,$x2,$y2, $color);
}
//画文字
$len=strlen($str);
$font="simsunb.ttf";
for($i=0;$i<4;$i++){
$color=imagecolorallocate($img,255,0,0);
$index=rand(0,$len-1);
$chr=substr($str,$index,1);
$x=20+$i*40;
$y=80;
imagettftext($img,50, rand(-70,70), $x, $y,$color,$font,$chr);
}
//输出画布
imagepng($img);
//销毁图像(释放占用的资源)
imagedestory($img);