GD2函數庫

GD2函數庫是一個開放的、動態創建圖像的、源代碼公開的函數庫,可以從官方網站http://www.boutell.com/gd下載最新版本的GD2庫。使用GD2函數庫可以在頁面中繪製各種圖形圖像,以及統計圖,如果與Ajax技術相結合,還可以製作出各種強大的動態圖表。

在PHP中,對圖像的操作可以分爲以下4個步驟:

創建畫布-->在畫布上繪製圖形-->保存並輸出結果圖像-->銷燬圖像資源。

1、創建畫布

GD2函數庫在圖形圖像繪製方面功能非常強大,利用它開發人員既可以在已有圖片的基礎上進行繪製,也可以在沒有任何素材的基礎上繪製,在後者情況下首先要創建畫布,之後所有操作都將依據所創建的畫布進行。

<span style="font-size:18px;">resource imagecreate( int x_size, int y_size)</span>

//該函數用於返回一個圖像標識符,參數單位爲像素(pixel)

載入圖片用:imagecreatefromjpeg("圖片的相對地址")   //對.jpg類的圖片,其他種類的圖片類似

2、顏色處理

應用GD2函數庫繪製圖形需要爲圖形中的背景、邊框和文字等元素指定顏色。

<span style="font-size:18px;">int imagecolorallocate( resource image, int red, int green, int blue)</span>

注意:在畫布上第一次調用imagecolorallocate將完成背景顏色的填充。

3、繪製文字

應用PHP中的GD庫既可以繪製英文字符串,也可以繪製中文漢字。

繪製英文字符串:

<span style="font-size:18px;"><span style="font-size:18px;">bool imagestring( resource image, int font, int x, int y, string s, int col)</span></span>

//imagestring()函數用col顏色將字符串s繪製到image所代表的圖像的x,y座標處(這是字符串左上角座標,整幅圖像的左上角爲0,0)。如果font是1、2、3、4或5,則使用內置字體。

繪製中文漢字:

<span style="font-size:18px;">array imagettftext( resource image, float size, float angle, int x, int y, int color, string fontfile, string text)</span>

//size:字體大小。根據GD版本不同,應以像素大小指定(GD1)或點大小(GD2)

//angle:字體的角度,逆時針計算,0°爲水平,(從左到右),90°則爲由下到上的文字

//x,y:文字的座標值

//color:文字的顏色

//fontfile:字體的文件名稱,也可以是遠端的文件

//text:字符串內容

注意:在GD2函數庫中支持的是UTF-8編碼格式的中文,所以在通過imagettftext()函數輸出中文字符串時,必須保證中文字符串的編碼格式是UTF-8,否則中文將不能正確地輸出。如果定義的中文字符串是GB2312簡體中文編碼,那麼要通過iconv()函數對中文字符串的編碼格式進行轉換。
4、輸出圖像

PHP作爲一種Web語言,無論是解析出的HTML代碼還是二進制的圖片最終都要通過瀏覽器顯示。應用GD2函數繪製的圖像首先需要用header()函數發送HTTP頭信息給瀏覽器,告知所要輸出圖像的類型,然後應用GD2函數庫中的函數完成圖像輸出。

<span style="font-size:18px;">void header( string string [, bool replace [, int http_response_code]])</span>

//string:發送的標頭。

//replace:如果一次發送多個標頭,對於相似的標頭是替換還是添加。如果是FALSE,則強制發送多個同類型的標頭。默認爲TRUE,即替換。

//http_response_code:強制HTTP響應爲指定值。

使用header()函數可以實現如下4種功能:

(1)重定向,這是最常用的功能:

<span style="font-size:18px;">header("Location: http://www.xxx.com")
</span>

(2)強制客戶端每次訪問頁面時獲取最新資料,而不是使用存在於客戶端的緩存。

<span style="font-size:18px;">//設置頁面的過期時間(用格林威治時間表示)
header("Expires: Mon, 08 Jul 2018 08:08:08 GMT");
//設置頁面的最後更新日期(用格林威治時間表示),使瀏覽器獲取最新資料
header("Last-Modified:".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");//控制頁面不使用緩存
header("Pragma: no-cache"); //參數(與以前的服務器兼容),即兼容HTTP 1.0協議
header("Content-type: application/file"); //輸出MIME類型
header("Content-Length: 227685"); //文件長度
header("Accept-Ranges:bytes");//接受的範圍單位
//默認時文件保存對話框中的文件名稱
header("Content-Disposition: attachment; filename=$filename"); //實現下載
</span>

(3)輸出狀態值到瀏覽器,控制訪問權限。

<span style="font-size:18px;">header('HTTP/1.1 401 Unauthorized');
header('status: 401 Unauthorized');
</span>

(4)完成文件的下載

<span style="font-size:18px;">header("Content-type: application/x-gzip");
header("Content-Disposition: attachment; filename=文件名");
header("Content-Description: PHP3 Generated Data");</span>


imagegif()函數以GIF格式將圖像輸出到瀏覽器或文件,語法如下:

<span style="font-size:18px;">bool imagegif( resource image [, string filename])</span>

imagejpeg()和imagepng()函數的使用方法同imagegif()類似。

5、銷燬圖像

在GD2函數庫中通過imagedestroy()函數來銷燬圖像,釋放內存。

<span style="font-size:18px;"><span style="font-size:18px;">bool imagedestroy( resource image)</span></span>






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章