PHP中提供了一些對圖像進行編輯處理的函數,其中最為典型的應用為隨機圖形驗證碼、圖片水印以及數據統計中餅狀圖和柱狀圖的生成等
PHP中有的圖形函數可以直接使用,但多數需要在安裝了GD2函數庫後才能使用。在Windows平台下安裝GD2庫很簡單,就是PHP5自帶的ext目錄中的php_gd2_dll文件。
如果沒有,說明安裝PHP時沒有安裝GD2庫,打開php.ini文件,查看php.ini文件(c:\winsows),查看文件中是否有一句";extension = php_gd2.dll"(Paths and Directories 裡),如果有,將其中的“;”去掉,再將文件中擴展目錄extension_dir的值設置成PHP的ext目錄所在的完整路徑,如"extension_dir = E:\php5\ext",保存後重啟Apache即可
繪制一個圖形一般包括4個步驟:1)創建一個背景,2)在背景中繪制圖形或輸入文本,3)輸出圖形,4)釋放所有資源
在此之前注意先將php.ini文件裡 Language Options下的output_buffering默認的off改為on,然後重啟Apache(Apache Restart),否則會出現如下的Warning:
Cannot modify header information - headers already sent by.....
例:繪制PNG圖形,如繪制一條直線
$image = imagecreate(400,400);//創建一個圖像,兩個參數表示圖像的寬度和高度,單位為像素,並返回此圖像的數據流 $background_color = imagecolorallocate($image,255,255,255);//為圖像設置了白色的背景流, $black = imagecolorallocate($image,0,0,0);//為圖像設置了黑色的背景流 imageline($image,0,0,100,100,$black);//繪制一條直線,並設置其顏色為黑色 ob_clean();//清除輸出,否則圖像無法顯示 header("Content-type:image/png");//向浏覽器發送頭信息,輸出png圖片 imagepng($image);//輸出圖形 imagedestroy($image);//清除資源
圖像處理函數可以直接創建一個圖像流來繪制圖形,還可以將現有的圖片作為圖像流讀入,然後在次基礎上對圖像進行修飾,如加上水印效果等。這種功能常用來防止圖片被盜用
例:在原始圖片(jpeg格式)上添加一個水印網址
ob_clean(); header("Content-type:image/jpeg"); $im = imagecreatefromjpeg("dog.jpg"); $red = imagecolorallocate($im,255,0,0); imagestring($im,5,6,10,"http://www.cnblogs.com/520xiuge/",$red); imagejpeg($im); imagedestroy($im);