PHP實驗圖片驗證碼

話不多說,直接上代碼:
<?php
	class ValidateCode
	{
 		private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//隨機因子
		private $code;//驗證碼
 		private $codelen = 4;//驗證碼長度
 		private $width = 130;//寬度
 		private $height = 50;//高度
 		private $img;//圖形資源句柄
 		private $font;//指定的字體
 		private $fontsize = 20;//指定字體大小
 		private $fontcolor;//指定字體顏色
 		//構造方法初始化
 		public function __construct() 
		{
  			$this->font = dirname(__FILE__).'/font/elephant.ttf';//注意字體路徑要寫對,否則顯示不了圖片
 		}
 		//生成隨機碼
 		private function createCode() 
		{
  			$_len = strlen($this->charset)-1;
  			for ($i=0;$i<$this->codelen;$i++)
			{
   				$this->code .= $this->charset[mt_rand(0,$_len)];
  			}
 		}
 		//生成背景
 		private function createBg()
		{
  			$this->img = imagecreatetruecolor($this->width, $this->height);
  			$color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
  			imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
 		}
 		//生成文字
 		private function createFont() 
		{
  			$_x = $this->width / $this->codelen;
  			for ($i=0;$i<$this->codelen;$i++)
			{
   				$this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
   				imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
  			}
		 }
 		//生成線條、雪花
 		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<100;$i++)
			{
   				$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
   				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->createCode();
  			$this->createLine();
  			$this->createFont();
  			$this->outPut();
 		}
 		//獲取驗證碼
 		public function getCode() 
		{
 			 return strtolower($this->code);
 		}
	}
?>
原文鏈接:http://www.jb51.net/article/40341.htm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章