今天我們來探討一下php中的new gd函數(shù),它是一個(gè)非常實(shí)用的圖像處理工具庫(kù),用來處理各種圖像相關(guān)操作,比如生成驗(yàn)證碼、加水印、縮略圖等等。
如果我們需要生成一張簡(jiǎn)單的圖像,可以使用如下代碼:
$image = imagecreatetruecolor(200, 200); $red = imagecolorallocate($image, 255, 0, 0); imagefilledrectangle($image, 0, 0, 200, 200, $red); header('Content-type: image/png'); imagepng($image); imagedestroy($image);
這段代碼創(chuàng)建了一個(gè)200x200的紅色矩形,并將其輸出為png格式的圖片。其中,imagecreatetruecolor函數(shù)用來創(chuàng)建真彩色圖像,imagecolorallocate用來為圖像分配顏色,imagefilledrectangle用來填充矩形,header用來發(fā)送HTTP頭部,告訴瀏覽器輸出的是一個(gè)png圖片,imagepng將圖像以PNG格式輸出,最后使用imagedestroy函數(shù)釋放圖像資源。
如果需要在圖像上加上水印,可以使用如下代碼:
$image = imagecreatefromjpeg('original.jpg');//原圖 $font = 'arial.ttf'; $white = imagecolorallocate($image, 255, 255, 255); imagettftext($image, 20, 0, 10, 50, $white, $font, 'Powered by PHP'); header('Content-type: image/jpeg'); imagejpeg($image); imagedestroy($image);
這段代碼首先用imagecreatefromjpeg函數(shù)將原圖載入,然后用imagettftext函數(shù)在圖像上添加水印文字,最后輸出為jpeg格式的圖片。
如果需要生成驗(yàn)證碼,可以使用如下代碼:
session_start(); $image = imagecreatetruecolor(100, 30); $white = imagecolorallocate($image, 255, 255, 255); imagefilledrectangle($image, 0, 0, 100, 30, $white); $code = ''; for ($i = 0; $i< 4; $i++) { $char = chr(mt_rand(65, 90)); $code .= $char; $color = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagettftext($image, 20, mt_rand(-30, 30), 5+($i*20), 20, $color, 'arial.ttf', $char); } $_SESSION['code'] = $code; header('Content-type: image/jpeg'); imagejpeg($image); imagedestroy($image);
這段代碼生成一個(gè)4位的驗(yàn)證碼,首先創(chuàng)建一個(gè)100x30的白色圖像,然后用循環(huán)從字符集中隨機(jī)選取字符,使用隨機(jī)顏色和旋轉(zhuǎn)角度繪制到圖像上,最后存儲(chǔ)驗(yàn)證碼到SESSION中,并輸出為jpeg格式的圖片。
以上代碼只是PHP GD庫(kù)中一小部分,PHP GD庫(kù)中支持的圖像處理操作非常豐富,可以實(shí)現(xiàn)各種復(fù)雜的圖像處理需求,可以說是PHP編程中必不可少的一個(gè)工具庫(kù)。