复制代码
- class Verif{
-
- private $width; //验证码图片的宽度
- private $height; //验证码图片的高度
- private $codeNum; //验证码的个数
- private $image; //创建验证码图片资源变量
- private $checkCode; //输出的验证码的字符串
- /*
- 功能:初始化构造函数,为主要参数赋值
- */
- function __construct($width=400,$height=40,$codeNum=4){
-
- $this->width=$width;
- $this->height=$height;
- $this->codeNum=$codeNum;
- $this->checkCode=$this->createCheckCode();
-
- }
-
- function showImage(){
-
- $this->setImage();
- $this->outPutText();
- $this-> setDisturbColor();
- $this->outPutImage();
-
- }
- function getCheckCode(){
-
- return $this->checkCode;
-
- }
- /*
- 功能:生成图片
- */
- private function setImage(){
-
- $this->image=imagecreatetruecolor($this->width,$this->height);
- $bg_color=imagecolorallocate($this->image,255,255,255);
- $boder_color=imagecolorallocate($this->image,0,0,0);
- imagefill($this->image,0,0,$bg_color);
- imagerectangle($this->image,0,0,$this->width-1,$this->height-1,$boder_color);
-
- }
-
- private function createCheckCode(){
-
- $arrCode=array('鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪');
- $checkCode='';
- for($i=0;$i<$this->codeNum;$i++){
-
- $checkCode.=$arrCode[rand(0,count($arrCode)-1)];
-
- }
- return $checkCode;
-
- }
-
- private function outPutText(){
-
- $text=iconv('gb2312','utf-8',$this->checkCode);
- $font='C:/WINDOWS/FONTS/simkai.ttf';
- for($i=0;$i<$this->codeNum;$i++){
-
- $text_color=imagecolorallocate($this->image,rand(0,255),rand(0,127),rand(0,255));
- $x=floor($this->width/$this->codeNum)*$i+3;
- $y=rand($this->height-5,$this->height-20);
- $char=$text[$i*3].$text[$i*3+1].$text[$i*3+2];
- imagettftext($this->image,20,0,$x,$y,$text_color,$font,$char);
-
- }
-
- }
- /*
- 功能:生成干扰线
- */
- private function setDisturbColor(){
-
- for($i=0;$i<=5;$i++){
-
- $line_color=imagecolorallocate($this->image,rand(0,255),rand(0,128),rand(0,255));
- imageline($this->image,rand(0,$this->width/2),rand(0,$this->height),rand($this->width/2,$this->width),rand(0,$this->height),$line_color);
-
- }
- for($a=0;$a<=800;$a++){
-
- $point_color=imagecolorallocate($this->image,rand(0,255),rand(0,128),rand(0,255));
- imagesetpixel($this->image,rand(0,$this->width),rand(0,$this->height),$point_color);
-
- }
-
- }
- private function outPutImage(){
-
- if(imagetypes() & IMG_GIF){
-
- header('Content-type:image/gif');
- imagegif($this->image);
-
- }elseif(imagetypes() & IMG_JPG){
-
- header('Content-type:image/jpeg');
- imagejpeg($this->image);
-
- }elseif(imagetypes() & IMG_PNG){
-
- header('Content-type:image/png');
- imagepng($this->image);
-
- }elseif(imagetypes() & IMG_WBMP){
-
- header('Content-type:image/vnd.wap.wbmp');
- imagewbmp($this->image);
-
- }else{
-
- die('PHP不支持图像创建!');
-
- }
-
- }
- /*
- 功能:当对象结束之前销毁资源释放内存
- */
- function __destruct(){
-
- imagedestroy($this->image);
-
- }
-
- }
|