| 裡,也是很好的效果。 前面是迴避GD的一個有效方法,但要做複雜的圖形,就非用GD不可了。 sadly 的PHP4中文手冊裡,說GD函數庫裡有44個函數,但我看最新版的英文PHP4手冊裡, GD的函數已經有80餘個!由於筆者英文比較差,讀英文的手冊只能連蒙帶猜,所以不能確定 新的GD庫是否重新支援GIF了?不管怎樣,我認為,既然我們在使用完全免費的PHP,何必要 “冒險”去用有著作權的GIF?何不免費到底,用PNG呢?只要你不需用動畫,PNG同樣可以做出 象GIF一樣小的檔案! 下面我就結合一段程式,一句代碼一句代碼地說說常用的這些GD函數。 從開頭說起吧。 Header("Content-type: image/png"); // 這是發送一個HTTP頭,告訴瀏覽器:“你聽著,這是一個圖象,可別當成文字來顯示呀!” // 由於我個人的喜好,用了PNG,當然你也可以用 Header("Content-type: image/gif"); // 或者 Header("Content-type: image/jpeg"); $im = ImageCreate (50, 100); // 建立圖象。注意,圖象在建立的時候還沒有被指定圖象格式。 // ImageCreate函數,兩個參數,無庸質疑,這是建立的圖象的寬度和高度。 // 它的傳回值是一個int數值,這個數值相當重要,你繼續繪製這個圖象、 // 直到你輸出這個圖象之前,無處不用到這個數值,我們暫且稱之為圖象的ID。 // 因為使用的頻率相當高,所以,我們把它賦給一個名字比較短的變數。 // 現在我們先畫一條線吧。畫線的函數是這樣的: // imageline (int im, int x1, int y1, int x2, int y2, int col); // 第一個參數im,就是圖象的ID,後面的 x1,y1,x2,y2,不用說了, // 是起點(x1,y1) 終點(x2,y2)的座標呀!(圖象的左上方座標是 (0,0) ) // 最後一個參數是什麼呀?是顏色!GD要求針對圖象定義顏色,用定義的這些顏色來作圖。 // 為什麼要針對圖象定義顏色?我猜測,是為了GIF、PNG等圖象用之做“調色盤”的。 // 這牽扯到圖象本身的知識,這裡不贅述了。 // 所以,畫線之前,我們還要先定義顏色(真麻煩)。 // $col_red = ImageColorAllocate($im, 255,192,192); // 這個函數四個參數,第一個$im……還用得著我每次都說嘛?下次就不說啦! // 後面三個參數就是要定義的顏色的紅(R)、綠(G)、藍(B)的分量,0~255之間。 // 這又牽扯到物理—光學的知識了。紅、綠、藍三原色光分量的不同, // 產生了千變萬化的色彩。上面我定義的這個顏色,紅255,綠192,藍192。 // 如果沒有搞錯,這是一個較亮的紅色。等一會兒我們來畫一條線試試看。 // 為什麼要等一會兒呢?因為一幅圖只有一種顏色的話,是什麼也看不出來的! // 我們把背景搞成黑的先! // 雖然手冊上沒有明確表示,但是我發現最先定義的顏色將預設被作為背景。 $col_black = ImageColorAllocate($im, 0,0,0); // 定義了一種顏色,紅光、綠光、藍光都沒有,自然黑咕隆咚——黑色。 // 然後再定義畫線用的顏色: $col_red = ImageColorAllocate($im, 255,192,192); // 現在可以開始畫紅線了: imageline ($im, 10, 20, 45, 85, $col_red); // 別急,這句完了以後你還看不到圖象。 ImagePNG($im); // 這一句就輸出圖象了,ImagePNG()輸出png圖象,ImageJPEG輸出jpeg圖象, // ImageGIF輸出gif圖象…… // 不要忘記這裡有一個參數,如果在螢幕顯示,而不是儲存為檔案, // 則省略這個參數——儲存的檔案名稱。如果這裡是要把它儲存為檔案, // 就應該這樣寫:ImagePNG($im,"test.png"); // 如果不指定路徑,這個檔案儲存在你的web目前的目錄裡。 // 如果是JPEG,則再多一個參數,是JPEG品質(0~100)。 // 如果要在螢幕顯示,則 ImageJPEG($im,"",80); // 如果要儲存,則 ImageJPEG($im,"test.jpg",80); // 注意,如果你要把這個圖象儲存為檔案, // 就不能使用 Header("Content-type: image/png"); 傳送意味著圖象的HTTP頭, // 因為一旦這樣,就表示你將輸出圖象。 ImageDestroy($im); // 毀掉記憶體裡的圖象,以釋放記憶體空間。 // 這樣就好了:一幅最簡單的GD作的圖作成了。 // 通過測試發現,產生這幅圖象檔案,用PNG格式只有131位元組, // 而用JPEG格式,即便是用最差的品質(0),也需要855位元組,圖象品質糟糕得沒法看。 // 而最高的JPEG品質,則需要2360位元組,色彩卻仍不如用PNG時的鮮豔。 // 由此可見,對於這種顏色數目少的圖象,用PNG比JPEG划算得多。 ?> 這一次先說到這裡,我會爭取儘快繼續寫下去。 http://www.bkjia.com/PHPjc/508283.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508283.htmlTechArticle實在不敢說是在這裡“講”GD庫,因為我用GD也才一兩次而已,絕大多數的函數還沒 有接觸到。可是三斑竹小刁熱情地向我約稿,我只好硬... |