运用主要知识点:imagecreatetruecolor--创建画布,imagecolorallocate--定义颜色,imagefill--填充,imagesetpixel--画点,imageline--画线,imagettftext--绘制文字,imagepng--输出画布,imagedestroy--销毁图像(释放占用资源);
首先我们要写header指令
header('content-type:image/png')
–以图片方式输出
//去掉不容易识别的i,l,o,I,L,O
$str=""abcdefghjkmnopqrstuvwzyzABCDEFGHJKMNPKRSTUVWZYZ0123456789
1.创建画布
$width=200;
$height=100;
$img = imagecreatetruecolor($width,$height);
2.定义画布的颜色
$color = imagecolorallocate($img,0xcc,0xcc,0xcc);
3.填充画布
imagefill($img,0, 0, $color);
4.画噪点
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);
}
5.画噪线
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);
}
6.画文字
$len = sstrlen($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*50;
$y = 80;
imagettftext($img,40,rand(-45,45)$x,$y,$color,Sfont,$chr);
}
7.输出画布
imagepng($img);
8.销毁画布
imagedestroy($img);