代码如下:
/*
获取随机验证码
@param $codeNum 验证码个数
@param $type 验证码类型 0:数字 1:数字+小写字母 2:数字+大小写字母
*/
function getCode($codeNum = 4, $type = 0)
{
$str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$subNum = array(9, 35, strlen($str) - 1);//随机验证码结束位置
$code = "";
for ($i = 0; $i < $codeNum; $i++) {
$code .= $str[rand(0, $subNum[$type])];
}
return $code;
}
/*
创建验证码
@param $width 验证码图片宽度
@param $heigth 验证码图片高度
@param $codePath 验证码文件默认保存路径
@param $codeName 验证码文件名字
@param $pixel 干扰点数量
@param $line 干扰线数量
*/
function createCode($codeNum = 4, $type = 0)
{
$width = $codeNum * 20;
$heigth = 30;
$codePath = "./image/code/";//验证码图片文件保存路径
$codeName = time() . ".png";//验证码图片文件名为当前时间戳
$pixel = 200;//干扰点数量
$line = 5;
$img = ImageCreateTrueColor($width, $heigth) or die("无法创建新的GD图像流");//创建一个新的真彩图像
$bgColor = imagecolorallocate($img, 200, 200, 200);//图像背景颜色
//随机颜色,用于填充验证码
$color[] = imagecolorallocate($img, 255, 128, 64);
$color[] = imagecolorallocate($img, 128, 64, 0);
$color[] = imagecolorallocate($img, 0, 128, 0);
$color[] = imagecolorallocate($img, 128, 128, 0);
$color[] = imagecolorallocate($img, 128, 128, 64);
$color[] = imagecolorallocate($img, 0, 0, 255);
$color[] = imagecolorallocate($img, 64, 0, 64);
$color[] = imagecolorallocate($img, 128, 0, 255);
imagefill($img, 0, 0, $bgColor);//填充图像
//添加边框
imagerectangle($img, 0, 0, $width - 1, $heigth - 1, $color[rand(0, 7)]);
//添加随机干扰点
for ($i = 0; $i < $pixel; $i++) {
$pixelColor = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($img, rand(0, $width), rand(0, $heigth), $pixelColor);
}
//添加随机干扰线
for ($i = 0; $i < $line; $i++) {
$lineColor = imagecolorallocate($img, rand(0, 255), rand(0, 255), rand(0, 255));
imageline($img, rand(0, $width), rand(0, $heigth), rand(0, $width), rand(0, $heigth), $lineColor);
}
//获取验证码
$code = getCode($codeNum, $type);
//添加验证码文字
for ($i = 0; $i < $codeNum; $i++) {
imagettftext($img, 18, rand(-40, 40), 8 + (18 * $i), 24, $color[rand(0, 7)], "BELL.TTF", $code[$i]);
}
//以 PNG 格式将图像输出到浏览器或文件
imagepng($img, $codePath . $codeName);
//销毁一图像
imagedestroy($img);
return $codeName;
}
Comments | NOTHING