利用php生成验证码
话不多说,请看代码:
<?php
/**
*php生成验证码
*@param$width画布宽
*@param$height画布高
*@param$vcodelen验证码长度
*@param$pointnum干扰像素点数量
*@param$linenum干扰线条数量
*
*思路:创建验证码画布,生成并填充背景色,生成验证码内容/干扰像素点/线,填充到画布,输出。
*/
$width=100;
$height=30;
$vcodelen=4;
$pointnum=200;
$linenum=3;
//创建画布
$image=imagecreatetruecolor($width,$height);
//创建色块
$bgcolor=imagecolorallocate($image,255,255,255);
//填充画布背景色
imagefill($image,0,0,$bgcolor);
//验证码内容
for($i=0;$i<$vcodelen;$i++){
//字体大小
$fontsize=5;
//字体颜色,颜色在限定范围内随机
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$data='abcdefghijklmnopqrstuvwxyz0123456789';
//验证码内容在以上字符串内随机截取
$fontcontent=substr($data,rand(0,strlen($data)),1);
//字符串显示位置
$x=($i*$width/4)+rand(5,15);
$y=rand(5,10);
//字符串填充图片
//imagestring的字体大小可选1-5,字体再大需要用imagettftext函数(需要字体文件)
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
//imagettftext($image,$fontsize,0,$x,$y,$fontcolor,'/font/Geneva.dfont',$fontcontent);
}
//干扰像素点
for($i=0;$i<$pointnum;$i++){
$pointcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
//画布填充像素点函数
imagesetpixel($image,rand(0,$width),rand(0,$height),$pointcolor);
}
//干扰线条
for($i=0;$i<$linenum;$i++){
$linecolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
//画布填充线条函数
imageline($image,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$linecolor);
}
//图片输出格式
header('content-type:image/png');
//输出验证码图片
imagepng($image);
//销毁画布
imagedestroy($image);
?>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!