<?php |
/** |
* 验证码类 |
*/ |
class imgCreate { |
private $charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ23456789' ; //随机因子 |
private $code = "" ; //验证码 |
private $codelen ; //验证码长度 |
private $width ; //宽度 |
private $height ; //高度 |
private $img ; //图形资源句柄 |
private $font = '/font/simhei.ttf' ; //指定字体 |
private $fontsize ; //指定字体大小 |
|
//构造方法初始化 |
public function __construct( $width = '100' , $height = '30' , $codelen = '4' , $fontsize = '5' ) { |
$this ->width= $width ; |
$this ->height= $height ; |
$this ->codelen= $codelen ; |
$this ->fontsize= $fontsize ; |
} |
|
//生成随机码 |
private function crecteCode(){ |
$_len = strlen ( $this ->charset)-1; |
for ( $i =0; $i < $this ->codelen; $i ++){ |
$this ->code.= $this ->charset[mt_rand(0, $_len )]; |
} |
return $this ->code; |
} |
//生成背景 |
private function createBg(){ |
$this ->img= imagecreatetruecolor( $this ->width, $this ->height); |
$Bgcolor = imagecolorallocate( $this ->img, mt_rand(0, 150), mt_rand(50, 100), mt_rand(0, 150)); |
imagefill( $this ->img, 0, 0, $Bgcolor ); |
} |
|
//生成文字 |
private function createFont(){ |
$fontcolor =imagecolorallocate( $this ->img, mt_rand(100, 200), mt_rand(100, 200), mt_rand(100, 200)); |
imagefttext ( $this ->img, $this ->fontsize, mt_rand(-10,10), $this ->width/6, $this ->height/1.2, $fontcolor , $this ->font, $this ->crecteCode()); |
} |
|
//生成线条、雪花 |
private function createLine(){ |
for ( $i =0; $i <6; $i ++){ |
$color = imagecolorallocate( $this ->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156)); |
imageline( $this ->img, mt_rand(0, $this ->width), mt_rand(0, $this ->height), mt_rand(0, $this ->width), mt_rand(0, $this ->height), $color ); |
} |
for ( $i =0; $i <20; $i ++){ |
$color = imagecolorallocate( $this ->img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200)); |
imagestring( $this ->img, mt_rand(1, 5), mt_rand(0, $this ->width), mt_rand(0, $this ->height), '*' , $color ); |
} |
} |
|
//输出 |
private function outPut(){ |
header( 'Content-type:image/png' ); |
imagepng( $this ->img); |
imagedestroy( $this ->img); |
} |
|
//对外生成 |
public function doimg(){ |
$this ->createBg(); |
$this ->createLine(); |
$this ->createFont(); |
$this ->outPut(); |
} |
|
//获取验证码 |
public function getCode(){ |
echo $this ->crecteCode(); |
} |
} |
?> |