小知识:
创建画布: imagecreatetruecolor(宽,高) //成功返回一个资源,失败返回false
创建颜色:imagecolorallocate()
填充区域:imagefill()
输出画布:imagepng()
销毁图像 :imagedestroy()
<?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);
//销毁画布
imagedestroy($img);