使用PHP生成带有干扰线的验证码,干扰点、字符倾斜详细类代码

使用PHP生成带有干扰线的验证码,干扰点、字符倾斜详细类代码

内容导读

收集整理的这篇技术教程文章主要介绍了使用PHP生成带有干扰线的验证码,干扰点、字符倾斜详细类代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3435字,纯文字阅读大概需要5分钟

内容图文

PHP生成验证码的类代码,本验证码类支持生成干扰点、干扰线等干扰像素,还可以使字符倾斜。在类中你可以定义验证码宽度、高度、长度、倾斜角度等参数,后附有详细用法:
<?php



class class_authcode{





public
$authcode
 = ''; //验证码





private $width


= ''; //验证码图片宽





private $height

 = ''; //验证码图片高





private $len



= ''; //验证码长度





private $tilt


 = array(-30,30);//验证码倾斜角度





private $font


 = 'AlteHaasGroteskBold.ttf';//字体文件





private $str



= ''; //验证码基





private $im



 = ''; //生成图片的句柄





//构造函数





function __construct($width=100,$heigh=30,$len=4) {







$this->width

= $width;







$this->height
 = $heigh;







$this->len


= $len;







$this->str


= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';







$str_len = strlen($this->str)-1;







for ($i=0; $i<$len; $i++) {









$this->authcode .= $this->str[rand(0,$str_len)];







}





}





//生成验证码图片





private function imagecreate(){







$this->im = imagecreatetruecolor($this->width,$this->height);





}





//干扰颜色





private function ext_color() {







return imagecolorallocate($this->im,rand(50, 180),rand(50, 180),rand(50, 180));





}





//生成干扰点





private function ext_point() {







for ($i=0; $i<$this->width*2; $i++) {









imagesetpixel($this->im,rand(1,$this->width-1),rand(1,$this->height-1),$this->ext_color());







}





}



 //生成干扰线









private function ext_line() {











for ($i=0; $i<$this->len; $i++) {













$x1 = rand(1,$this->width-1);













$y1 = rand(1,$this->height-1);













$x2 = rand(1,$this->width-1);













$y2 = rand(1,$this->height-1);













imageline($this->im,$x1,$y1,$x2,$y2,$this->ext_color());











}









}







//把验证码写入图片(不能和$this->imgstrfloat()同时使用)









private function imgstr() {











$old_x = 1;











for ($i=0; $i<$this->len; $i++) {













$fontsize = rand(2,5);


//字体大小













$tmp_1 = $fontsize*2.5;













$tmp_2 = $i>0
$tmp_1 : 0;













$y = rand(1,$this->height/2);













$x = rand($old_x+$tmp_2, ($i+1)*($this->width)/$this->len-$tmp_1);













$old_x = $x;













$color = imagecolorallocate($this->im,rand(200, 255),rand(200, 255),rand(200, 255));













imagestring($this->im,$fontsize,$x,$y,$this->authcode[$i],$color);











}









}







//把验证码倾斜写入图片(注意这里不能和$this->imgstr()方法同时使用)









 private function imgstrfloat() {











$old_x = 1;











for ($i=0; $i<$this->len; $i++) {













$fontfloat = rand($this->tilt[0],$this->tilt[1]);













$fontsize = rand(10,15);



//字体大小













$tmp_1 = $i>0
$fontsize : 0;













$y = rand($fontsize+2, $this->height-2);













$x = rand($old_x+$tmp_1+2, ($i+1)*($this->width)/$this->len-$fontsize-2);













$old_x = $x;













$color = imagecolorallocate($this->im, rand(200, 255), rand(200, 255), rand(200, 255));













imagettftext($this->im, $fontsize, $fontfloat, $x, $y, $color, $this->font, $this->authcode[$i]);











}









}







 //
输出验证码图片 function output() { $this->imagecreate(); $this->imgstr(); //$this->imgstrfloat(); $this->ext_point(); $this->ext_line(); header('content-type:image/png'); imagepng($this->im); imagedestroy($this->im); } } ?>

本验证码用法说明:

$obj = new class_authcode();//实例化对象,并设置验证码图片的宽、高和验证码的长度

$obj->$authcode; //获取验证码

$obj->output(); //
输出验证码图片

以上就是PHP生成验证码的类代码,不足之处请指出。

更多相关PHP问题请访问PHP中文网:https://www.gxlcms.com/

以上就是使用PHP生成带有干扰线的验证码,干扰点、字符倾斜详细类代码的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的使用PHP生成带有干扰线的验证码,干扰点、字符倾斜详细类代码全部内容,希望文章能够帮你解决使用PHP生成带有干扰线的验证码,干扰点、字符倾斜详细类代码所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com