PHP基础建设中,绘制验证码是一个基础却又无法跳过的步骤,今天就来简单的分享一下使用GD函数库在PHP代码中绘制图片验证码的,代码算作基础,直接上代码,注释里面看解释吧!
<?php
$image=imagecreatetruecolor(200,80);//创建画布,参数200和80代表的是画布的宽和高,默认参数是PX,翻译一下就是绘制宽200PX高度80PX的一个图形画布
$red1=imagecolorallocate($image,220,220,220);//创建填充颜色,表示给$image画布创建对应的颜色,后面的参数220分别代表R,G,B三种数值填充画布背景色
//绘制干扰线,绘制20条干扰线
for($i=0;$i<20;$i++){
//获取随机位置,画布是200*80,所以宽度取值随机数不高于200,高度取值随机数不高于80
$x1=mt_rand(0,200);
$y1=mt_rand(0,80);
$x2=mt_rand(0,200);
$y2=mt_rand(0,80);
//为线段获取随机颜色
$r3=mt_rand(0,255);
$g3=mt_rand(0,255);
$b3=mt_rand(0,255);
$red2=imagecolorallocate($image,$r3,$g3,$b3);
//绘制线段颜色并且填充完毕
imageline($image,$x1,$y1,$x2,$y2,$red2);//PHP绘制直线函数,IMAGELINE ,其中$image代表所在绘制目的画布,$x1,$y1代表直线起始点位坐标,$x2,$y2代表直线终点坐标,$red2代表直线绘制的颜色填充
}
//绘制干扰点100个随机,循环产生
for($i=0;$i<100;$i++){
//获取随机位置画布是200*80,所以宽度取值随机数不高于200,高度取值随机数不高于80
$x1=mt_rand(0,200);
$y1=mt_rand(0,80);
//获取随即颜色
$r3=mt_rand(0,255);
$g3=mt_rand(0,255);
$b3=mt_rand(0,255);
$red2=imagecolorallocate($image,$r3,$g3,$b3); //绘制点颜色并且填充完毕
imagesetpixel($image,$x1,$y1,$red2);//绘制像素点$image代表所在画布,$x1,$y1代表点所在的坐标位置,$red2代表点所存在的颜色
}
$size=30;
$angle=0;
$color2=imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//绘制字体随机颜色
$fontfile=__DIR__."/fonts/SitkaB.ttc";//字体在绝对路径中索引
//随机生成4个字母数字
$string='qwertyuiopalskdjfhgmznxbc123456778';
$len=strlen($string);
for($i=0;$i<4;$i++){
$text.=$string[mt_rand(0,$len-1)];
}
imagettftext($image,$size,$angle,10,40,$color2,$fontfile,$text);
//imagettfeext 代表绘制文字,$image所在画布,$size代表字体大小$angle代表倾斜角度10*40就是文字的起始点x*y坐标,$color2代表字体颜色fontfile代表所在字体,$text代表绘制文字内容
header('content-type:image/png');//定义网页文本 输出类型
imagepng($image);//根据输出图片类型输出图片
imagedestroy($image);