9-2. PHP图像验证码

创建验证码背景图像:

1)自定义长宽

2)背景颜色随着刷新自动切换

header('Content-type:image/jpeg');
$width=120;
$height=40;
$img=imagecreatetruecolor($width,$height);
$colorBg=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));
imagefill($img,0,0,$colorBg);
imagejpeg($img);

 

画验证码修饰图:

1)画一个矩形

$colorBorder=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));
imagerectangle($img,0,0,$width-1,$height-1,$colorBorder);

2)画大量像素点

$colorPixel=imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200));
for ($i=0;$i<100;$i++){
    imagesetpixel($img,rand(0,$width-1),rand(0,$height-1),$colorPixel);
}

3)画多条线

$colorLine=imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200));
for ($i=0;$i<3;$i++){
    imageline($img,rand(0,($width-1)/2),rand(0,$height),rand($width/2,$width),rand(0,$height),$colorLine);
}

4)写入字符串

1. 普通字体

$colorString=imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));
imagestring($img,5,0,0,'abcd',$colorString);

2. 指定字体

$colorString=imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));
imagettftext($img,14,0,0,39,$colorString,'font/Elements.ttf','abcd');

3)多样验证码

$element=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n',
                'o','p','q','r','s','t','u','v','w','x','y','z');
$string='';
for ($i=0;$i<5;$i++){
    $string.=$element[rand(0,count($element)-1)];
}
$colorString=imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));
imagettftext($img,14,rand(-5,5),rand(5,15),rand(30,35),$colorString,'font/Elements.ttf',$string);

 

代码汇总:

header('Content-type:image/jpeg');
$width=120;
$height=40;

$element=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n',
                'o','p','q','r','s','t','u','v','w','x','y','z');
$string='';
for ($i=0;$i<5;$i++){
    $string.=$element[rand(0,count($element)-1)];
}

$img=imagecreatetruecolor($width,$height);
$colorBg=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));
imagefill($img,0,0,$colorBg);

$colorBorder=imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));
imagerectangle($img,0,0,$width-1,$height-1,$colorBorder);

$colorPixel=imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200));
for ($i=0;$i<100;$i++){
    imagesetpixel($img,rand(0,$width-1),rand(0,$height-1),$colorPixel);
}

$colorLine=imagecolorallocate($img,rand(100,200),rand(100,200),rand(100,200));
for ($i=0;$i<3;$i++){
    imageline($img,rand(0,($width-1)/2),rand(0,$height),rand($width/2,$width),rand(0,$height),$colorLine);
}

$colorString=imagecolorallocate($img,rand(10,100),rand(10,100),rand(10,100));
imagettftext($img,14,rand(-5,5),rand(5,15),rand(30,35),$colorString,'font/Elements.ttf',$string);

imagejpeg($img);
imagedestroy($img);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值