2007年4月30日 星期一

PHP中製作驗證圖片


今天再推出驗證圖片的功能
每一行的指令都有加上註解
下面各項參數最佳化於100X30的尺寸
如有變更驗證圖片的長寬
參數需要自行修正
function makeRandomImage($arg_aryVerifyString,$arg_intWidth = 100,$arg_intHieht = 30)
{
header('Content-type: image/png');
//干擾字串長度
$intInterfereStringLength = round($arg_intWidth / 5.4) ;
//干擾字串出現幾次
$intInterfereStringDisplayCount = round($arg_intHieht / 10) ;
//畫布
$objImage = ImageCreate($arg_intWidth,$arg_intHieht);
//背景色碼
$objBgColor = imagecolorallocate($objImage,255,255,255);
//框線色碼
$objBorderColor =imagecolorallocate($objImage,0,0,255);
//驗證字串色碼
$objVerifyStringColor = imagecolorallocate($objImage,255,10,22);
//干擾字串色碼
$objInterfereStringColor = imagecolorallocate($objImage,255,128,255);
//製作背景干擾字串
for($i=0 ; $i<$intInterfereStringDisplayCount ;$i++)
{
imagestring($objImage, 1,2,($i*10)+1, createRandString($intInterfereStringLength), $objInterfereStringColor);
}
//上驗證碼
imagestring($objImage, 5, round($arg_intHieht*0.3), round($arg_intHieht/4.5), $arg_aryVerifyString, $objVerifyStringColor);
//畫框線
imageline($objImage,0,0,$arg_intWidth,0,$objBorderColor);//上
imageline($objImage,0,$arg_intHieht -1,$arg_intWidth,$arg_intHieht-1,$objBorderColor);//下
imageline($objImage,0,0,0,$arg_intHieht,$objBorderColor); //左
imageline($objImage,$arg_intWidth-1,0,$arg_intWidth-1,$arg_intHieht,$objBorderColor); //右
imagepng( $objImage);
//清除資源
imageDestroy($objImage);
}
//隨機字串
function createRandString ($arg_intLength) {
srand((double)microtime()*1000000);
$strLetters = range ('`','Z');
$strNumbers = range(0,9);
$arrayChars = array_merge($strLetters,$strNumbers);
$strRandString ='';
for ( $i=0;$i<$arg_intLength;$i++ )
{
shuffle($arrayChars);
$strRandString .= $arrayChars[0];
}
return $strRandString;
}

怎樣使用?
makeRandomImage('A E - 8 6',100,30);

【下列文章您可能也有興趣】

沒有留言: