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

<?phpclass 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; $iauthcode .= $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; $iwidth*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; $ilen; $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; $ilen; $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; $ilen; $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);}}?>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值