PHP實(shí)現(xiàn)生成GIF動(dòng)態(tài)驗(yàn)證碼圖片功能
來源:易賢網(wǎng) 閱讀:1475 次 日期:2015-04-16 10:17:48
溫馨提示:易賢網(wǎng)小編為您整理了“PHP實(shí)現(xiàn)生成GIF動(dòng)態(tài)驗(yàn)證碼圖片功能”,方便廣大網(wǎng)友查閱!

如何用PHP生成GIF動(dòng)畫來實(shí)現(xiàn)動(dòng)態(tài)圖片驗(yàn)證碼?相信您要在找答案,以下是實(shí)現(xiàn)過程。

ImageCode函數(shù)通過GIFEncoder類實(shí)現(xiàn)的GIF動(dòng)畫的PHP源代碼,有興趣的朋友可以研究一下。

有關(guān)GIFEncoder類。 具體代碼入如下:

/**

* ImageCode 生成GIF圖片驗(yàn)證

* @param $string 字符串

* @param $width 寬度

* @param $height 高度

* */

function ImageCode($string = '', $width = 75, $height = 25)

{

$authstr = $string ? $string : ((time() % 2 == 0) ? mt_rand(1000, 9999) : mt_rand(10000, 99999));

$board_width = $width;

$board_height = $height;

// 生成一個(gè)32幀的GIF動(dòng)畫

for($i = 0; $i < 32; $i++)

{

ob_start();

$image = imagecreate($board_width, $board_height);

imagecolorallocate($image, 0,0,0);

// 設(shè)定文字顏色數(shù)組

$colorList[] = ImageColorAllocate($image, 15,73,210);

$colorList[] = ImageColorAllocate($image, 0,64,0);

$colorList[] = ImageColorAllocate($image, 0,0,64);

$colorList[] = ImageColorAllocate($image, 0,128,128);

$colorList[] = ImageColorAllocate($image, 27,52,47);

$colorList[] = ImageColorAllocate($image, 51,0,102);

$colorList[] = ImageColorAllocate($image, 0,0,145);

$colorList[] = ImageColorAllocate($image, 0,0,113);

$colorList[] = ImageColorAllocate($image, 0,51,51);

$colorList[] = ImageColorAllocate($image, 158,180,35);

$colorList[] = ImageColorAllocate($image, 59,59,59);

$colorList[] = ImageColorAllocate($image, 0,0,0);

$colorList[] = ImageColorAllocate($image, 1,128,180);

$colorList[] = ImageColorAllocate($image, 0,153,51);

$colorList[] = ImageColorAllocate($image, 60,131,1);

$colorList[] = ImageColorAllocate($image, 0,0,0);

$fontcolor = ImageColorAllocate($image, 0,0,0);

$gray = ImageColorAllocate($image, 245,245,245);

$color = imagecolorallocate($image, 255,255,255);

$color2 = imagecolorallocate($image, 255,0,0);

imagefill($image, 0, 0, $gray);

$space = 15; // 字符間距

if($i > 0) // 屏蔽第一幀

{

for ($k = 0; $k < strlen($authstr); $k++)

{

$colorRandom = mt_rand(0,sizeof($colorList)-1);

$float_top = rand(0,4);

$float_left = rand(0,3);

imagestring($image, 6, $space * $k, $top + $float_top, substr($authstr, $k, 1), $colorList[$colorRandom]);

}

}

for ($k = 0; $k < 20; $k++)

{

$colorRandom = mt_rand(0,sizeof($colorList)-1);

imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]);

}

// 添加干擾線

for($k = 0; $k < 3; $k++)

{

$colorRandom = mt_rand(0, sizeof($colorList)-1);

// $todrawline = rand(0,1);

$todrawline = 1;

if($todrawline)

{

imageline($image, mt_rand(0, $board_width), mt_rand(0,$board_height), mt_rand(0,$board_width), mt_rand(0,$board_height), $colorList[$colorRandom]);

}

else

{

$w = mt_rand(0,$board_width);

$h = mt_rand(0,$board_width);

imagearc($image, $board_width - floor($w / 2) , floor($h / 2), $w, $h, rand(90,180), rand(180,270), $colorList[$colorRandom]);

}

}

imagegif($image);

imagedestroy($image);

$imagedata[] = ob_get_contents();

ob_clean();

++$i;

}

$gif = new GIFEncoder($imagedata);

Header ('Content-type:image/gif');

echo $gif->GetAnimation();

}

/**

* 調(diào)用示例

* */

session_start();

$authstr = mt_rand(1000, 9999); // 生成隨機(jī)字符串

$_SESSION['verify'] = $authstr; // 記錄session

ImageCode($authstr, 60); // 顯示GIF動(dòng)畫

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看技術(shù)文章
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)