代码如下:
<?php
header("Content-type: text/html; charset=utf8");
/*
* 函数名:createImage
* 描述:获取验证图片验证码
* @param $width 画布的宽
* @param $height 画布的高
* @param $number 验证码位数
*/
function createImage($width,$height,$number){
// 1.创建画布
// imagecreatetruecolor执行创建操作(创建一幅真彩色的图像)
// $width:画布的宽 $height:画布的高
$img = imagecreatetruecolor($width, $height);
// 2.为画布填充背景色
// mt_rand函数返回0-120随机数
// imagecolorallocate为一幅图像分配颜色
$bgColor = imagecolorallocate($img, mt_rand(0,120), mt_rand(0,120), mt_rand(0,120));
// 填充操作
imagefill($img, 1, 1, $bgColor);
// 3.定义在画布上的显示文字
// 显示随机字符的范围
$arr = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
// 得到指定位数的随机字符
$str = '';
// 把数组中的元素按随机顺序重新排序
shuffle($arr);
// 返回包含随机键名的数组
$keyArr = array_rand($arr,$number);
foreach ($keyArr as $value) {
$str .= $arr[$value];
}
// 4.将字符写入到画布
$span = ceil($width/($number+1));
for ($i=1; $i <= $number; $i++) {
// 为画布创建画笔色
$charColor = imagecolorallocate($img, mt_rand(120,255), mt_rand(120,255), mt_rand(120,255));
// 水平地画一行字符串
// $img:画布
// 5:字体
// $span*$i:x轴坐标
// 12:Y坐标
// $str[$i-1]:字符串
// $charColor:颜色
imagestring($img, 5, $span*$i, 12, $str[$i-1], $charColor);
}
// 5.创建干扰线
for ($i=0; $i < 8; $i++) {
// 创建干扰线颜色
$linColor = imagecolorallocate($img, mt_rand(75,150), mt_rand(75,150), mt_rand(75,150));
// 创建干扰线
imageline($img, mt_rand(0,$width-1), mt_rand(0,$height-1), mt_rand(0,$width-1), mt_rand(0,$height-1), $linColor);
}
// 6.显示图片
header('content-type:image/png');
// 清空输出缓冲区
ob_clean();
// 打印图片
imagepng($img);
}
// 调用创建验证码图片函数
createImage(150,40,4);
运行结果如下: