PHP GD生成的圖像圖像無法顯示,因為它包含Firefox中的錯誤



當使用PHP生成圖像時,例如使用下面的代碼或使用JPEG而不是PNG添加水印到服務器存儲的圖片,圖像可能根本不會生成,並且會引發錯誤,直接在Firefox上可見,但不會在Chrome上。

儘管在某些服務器上工作,但這種代碼現在可能在另外一些服務器上工作,有時候出於難以理解的原因。在我的情況下,它在本地運行得非常好,但在互聯網服務器上出現錯誤,圖像無法顯示,因為它包含錯誤。

這個問題可能有幾個原因,其中一些是:

輸出之前已經設置好了。

來自圖像生成的真正錯誤。

使用錯誤的圖像類型。

圖像庫未安裝。

輸出之前已經設置好了

即使不是故意的,也可能是這樣的情況,例如,其他先前的腳本最後包含空格 - 為了避免此錯誤,請確保按照PHP建議,不要使用PHP結束標記關閉腳本?>

然後,在使用頭函數之前,請使用以下代碼來確保先前設置的頭文件被丟棄

還有這個功能可以確保在標題和圖像之前沒有輸出

這解決了我的問題,並且圖像再次正確顯示。

來自圖像生成的真正錯誤

如果在圖像生成過程中出現真正的錯誤,請確保PHP設置為顯示所有可能的錯誤類型,並檢查相應的日誌,以便能夠追踪並解決它。

以下代碼將使PHP報告日誌中的所有錯誤:

由於服務器配置的原因,您可能會發現報告了一些錯誤,即使它們沒有出現在輸出html中。

使用錯誤的圖像類型

確保您使用的圖像類型是正確的,例如使用此代碼來區分png和jpeg。

根據使用的圖像生成功能,還要根據使用的輸出確保標題是正確的

圖像庫未安裝

學習SEO基礎知識:今天註冊!

通過我們易於遵循的基礎課程掌握SEO的基礎知識,可以提高網站的知名度和流量。

開始學習SEO

通過我們易於遵循的基礎課程掌握SEO的基礎知識,可以提高網站的知名度和流量。

確保圖像庫已安裝。為此,運行函數phpinfo();在一個腳本中,並檢查輸出中與PHP GD相關的以下值,這是由imagepng()等函數使用的圖形庫;

在缺少軟件包的情況下,解決這個問題的方式取決於您的本地配置,可以通過使用PEAR命令添加軟件包,也可以使用內置的解決方案中的Web主機進行軟件包安裝。

當imagejpeg或imagepng不工作時該怎麼辦

在NotePad ++中,打開調用imagepng函數的PHP文件,並在轉到菜單編碼>轉換為UTF-8而不使用BOM後保存。

在DreamWeaver中,轉到頁面屬性>標題/編碼>取消選中包括Unicode簽名(BOM)。

當PHP imagejpeg或imagepng不起作用時,很可能是因為PHP文件已經使用BOM,物料清單編碼,因此在圖像數據之前與圖像一起發送額外信息。

PHP imagejpeg和PHP imagepng函數用於直接在服務器響應中發送圖片代碼。

PHP - imagepng無法正常工作
PHP - imagepng函數
PHP - imagejpeg函數

常見問題

為什麼我不能在瀏覽器中顯示使用PHP GD創建的圖像?
如果您的php GD生成的圖像未顯示並在瀏覽器中顯示錯誤,則可能是由於幾個原因,例如以前已經發送的輸出,圖像生成期間的真實錯誤,使用錯誤的圖像類型或GD Image庫正在安裝。確保未發送先前的輸出,檢查是否有真正的錯誤,驗證圖像類型和標頭,並確認GD庫的安裝。
開發人員如何解決由於錯誤而未在Firefox中顯示的PHP GD生成的圖像的問題?
開發人員應檢查圖像生成代碼是否有錯誤,請確保在任何圖像數據之前發送正確的內容類型標頭,並驗證未輸出PHP錯誤或警告。輸出圖像之前,請使用ob_clean()也可能有所幫助。

Yoann Bierling
關於作者 - Yoann Bierling
Yoann Bierling是一家網絡出版和數字諮詢專業人員,通過技術專業知識和創新產生了全球影響。熱衷於賦予個人和組織在數字時代蓬勃發展,他被迫取得出色的成果,並通過創建教育內容來推動成長。

學習SEO基礎知識:今天註冊!

通過我們易於遵循的基礎課程掌握SEO的基礎知識,可以提高網站的知名度和流量。

開始學習SEO

通過我們易於遵循的基礎課程掌握SEO的基礎知識,可以提高網站的知名度和流量。




評論 (6)

 2018-08-19 -  Irvin Vasquez
Simple, clear and well explained, many thanks
 2018-08-19 -  Joyce Lawrence
ありがとう、非常に有益な
 2018-08-19 -  Catherine Roberts
Dokładnie tego, czego szukałem, idealnie
 2018-08-19 -  Headlinext
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
 2018-08-19 -  Marshel
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
 2018-08-19 -  porcateraC
بالضبط ما كنت أبحث عنه ، مثالي

發表評論