步骤:
1.创建画布
2.创建验证码
3.添加干扰
4.输出
5.释放内存
代码:
<?php// 创建画布
$width = 60;
$height = 20;
$img = imagecreatetruecolor($width, $height);//返回图像标识符,$width,$height为图像大小
$black = imagecolorallocate($img, 0,0,0);//画布的颜色处理,allocate为配置的意思,black黑
$gray = imagecolorallocate($img, 200,200,200);//画布的颜色处理,gray灰
// 填充背景
imageFill($img,0,0,$gray);
// 绘制验证码
$numbers = range(0,9);//range()建立数组
$characters = range('A','Z');
$list = array_merge($numbers, $characters);//array_merge合并数组
$n = count($list)-1;//count()统计数组内元素的数量
$authnum = '';
//获取四个随机数
for($i=0; $i<4; $i++){
$randnum = rand(0,$n);
$authnum .= $list[$randnum];
}
/*
*@method imagestring()绘制文字
*@param $img画布
*@param 5为内置字体,可以为1-5、
*@param 10, 3图像坐标
*@param $authnum文字
*@param $black文字颜色,
*/
imagestring($img, 5, 10, 3, $authnum, $black);
// 加入干扰像素
for($i=0; $i<100; $i++)
{
$randcolor = imagecolorallocate($img, rand(0,255), rand(0,255), rand(0,255));
/*
* @method imagesetpixel 画一个单一像素
* 在$img的rand()%$width, rand()%$height的坐标中
* 添加一个$randcolor颜色点
*/
imagesetpixel($img, rand()%$width, rand()%$height, $randcolor);
}
// 输出
header('Content-type: image/jpeg');//header()函数发送HTTP头信息给浏览器,告知所要输出图像的类型
imagejpeg($img);
// 释放内存
imageDestroy($img);
?>