第十一招 PHP之簡易驗證碼
阿新 • • 發佈:2019-01-06
建立影象
resource imagecreatetruecolor ( int $width
, int $height
)
imagecreatetruecolor() 返回一個影象識別符號,代表了一幅大小為 x_size 和 y_size 的黑色影象。
width
影象寬度。
height
影象高度。
分配顏色
int imagecolorallocate ( resource $image
, int $red
$green
, int $blue
)
imagecolorallocate() 返回一個識別符號,代表了由給定的 RGB 成分組成的顏色。red,green 和 blue 分別
是所需要的顏色的紅,綠,藍成分。這些引數是 0 到 255 的整數或者十六進位制的 0x00 到 0xFF。
imagecolorallocate() 必須被呼叫以建立每一種用在 image 所代表的影象中的顏色。
填充顏色
bool imagefill ( resource $image
$x
, int $y
, int $color
)
imagefill() 在 image 影象的座標 x,y(影象左上角為 0, 0)處用 color 顏色執行區域填充(即與 x, y
點顏色相同且相鄰的點都會被填充)
繪製直線
bool imageline ( resource $image
, int $x1
, int $y1
, int $x2
$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);
?>