<?php
function yzm($w=100,$h=50,$t=3,$num) {
//$w=画布宽度,$h=画布高度 ,$t=验证码字符集
// 1、 准备画布
$img=imagecreatetruecolor($w,$h);
// 2、 为画布准备调色板
//$bgcolor=imagecolorallocate($img,rand(130,255),rand(130,255),rand(130,255));
/* $s=imagecolorallocate($img,rand(1,130),rand(1,130),rand(1,130));
$d=imagecolorallocate($img,rand(130,255),rand(130,255),rand(130,255)); */
// 3、 用函数画画
imagefilledrectangle($img,0,0,$w,$h,d($img));
//使用for循环输出100个像素点干扰元素
for($i=1;$i<=100;$i++){
imagesetpixel($img,rand(0,$w),rand(0,$h),s($img));
}
//使用for循环输出4个椭圆形干扰元素
for($i=1;$i<=4;$i++){
imageellipse($img,rand(0,$w),rand(0,$w),rand(0,$w),rand(0,$w),s($img));
}
//进行字符匹配
$str=''; //声明一个变量,给他一个空值
for($i=1;$i<=$num;$i++) {
if($t<3) {
$type=$t;
}else{
$type=rand(0,2);}
switch ($type) {
case 0:
//数字
$ascii=rand(48,57);
break;
case 1:
//大写字母
$ascii=rand(65,90);
break;
case 2:
//小写字母
$ascii=rand(97,122);
break;
}
$str.=chr($ascii);
//这里循环出来是一个数组,下面通过数组加下标的形式访问
}
//使用for循环出4个字母
for ($i=0;$i<$num;$i++) {
$x=$i*($w/$num)+10;
$y=rand(2,$h-15);
imagechar($img,7,$x,$y,$str[$i],s($img));
}
// 4、 告诉服务器你画的是什么玩意
header("content-type:image/jpg");
// 5、 输出到浏览器或者保存为文件
imagejpeg($img);
// 6、 销毁资源(画布和调色板)
imagedestory($img);
}
//随机输出背景颜色
function s($img) {
return imagecolorallocate($img,rand(1,130),rand(1,130),rand(1,130));
}
//随机输出验证码颜色
function d($img) {
return imagecolorallocate($img,rand(130,255),rand(130,255),rand(130,255));
}
yzm(125,30,3,4); //参数.宽度,高度,0=验证码全是数字 1=大写字母 2=小写字母 3以上是数字和字母混编,有多少个验证码
?>
评论 (0)