1. 程式人生 > >第十一招 PHP之簡易驗證碼

第十一招 PHP之簡易驗證碼

建立影象

resource imagecreatetruecolor ( int $width , int $height )

imagecreatetruecolor() 返回一個影象識別符號,代表了一幅大小為 x_size 和 y_size 的黑色影象。

width
影象寬度。

height
影象高度。

 

分配顏色

int imagecolorallocate ( resource $image , int $red

 , int $green , int $blue )

imagecolorallocate() 返回一個識別符號,代表了由給定的 RGB 成分組成的顏色。red,green 和 blue 分別

是所需要的顏色的紅,綠,藍成分。這些引數是 0 到 255 的整數或者十六進位制的 0x00 到 0xFF。

imagecolorallocate() 必須被呼叫以建立每一種用在 image 所代表的影象中的顏色。

 

填充顏色

bool imagefill ( resource $image

 , int $x , int $y , int $color )

imagefill() 在 image 影象的座標 x,y(影象左上角為 0, 0)處用 color 顏色執行區域填充(即與 x, y 

點顏色相同且相鄰的點都會被填充)

 

繪製直線

bool imageline ( resource $image , int $x1 , int $y1 , int $x2

 , int $y2 , int $color )

imageline() 用 color 顏色在影象 image 中從座標 x1,y1 到 x2,y2(影象左上角為 0, 0)畫一條線段。

Example #1 畫一條粗線

 

繪製畫素點

bool imagesetpixel ( resource $image , int $x , int $y , int $color )

imagesetpixel() 在 image 影象中用 color 顏色在 x,y 座標(影象左上角為 0,0)上畫一個點。

 

影象格式

bool imagepng ( resource $image [, string $filename ] )

imagepng() 將 GD 影象流(image)以 PNG 格式輸出到標準輸出(通常為瀏覽器),或者如果用 filename 給

出了檔名則將其輸出到該檔案。

 

銷燬影象

bool imagedestroy ( resource $image )

imagedestroy() 釋放與 image 關聯的記憶體。

 

簡易驗證碼生成

<?php
header ("Content-type: image/png");
$im =imagecreatetruecolor (100, 40);
$image_color = imagecolorallocate ($im, 255, 255, 255);
imagefill($im,0,0,$image_color);

//生成4個偽隨機數

for($i=0;$i<4;$i++)
{
	$fontsize=10;
	$fontcolor=imagecolorallocate($im,rand(0,120),rand(0,120),rand(0,120));
	$fontcontent=rand(0,9);
	$x=($i*100/4)+rand(5,10);
	$y=rand(8,10);
	imagestring($im,$fontsize,$x,$y,$fontcontent,$fontcolor);
}

//生成干擾點
for($i=0;$i<300;$i++)
{

	$pixcolor=imagecolorallocate($im,rand(50,200),rand(50,200),rand(50,200));
	imagesetpixel($im,rand(1,99),rand(1,39),$pixcolor);
}

//生成干擾線
for($i=0;$i<5;$i++)
{

	$linecolor=imagecolorallocate($im,rand(50,200),rand(50,200),rand(50,200));
	imageline($im,rand(1,99),rand(0,5),rand(1,99),rand(30,39),$linecolor);
}

//顯示驗證碼
imagepng ($im);

//銷燬驗證碼
imagedestroy ($im);
?>