PHP GD生成的圖像圖像無法顯示,因為它包含Firefox中的錯誤
當使用PHP生成圖像時,例如使用下面的代碼或使用JPEG而不是PNG添加水印到服務器存儲的圖片,圖像可能根本不會生成,並且會引發錯誤,直接在Firefox上可見,但不會在Chrome上。
儘管在某些服務器上工作,但這種代碼現在可能在另外一些服務器上工作,有時候出於難以理解的原因。在我的情況下,它在本地運行得非常好,但在互聯網服務器上出現錯誤,圖像無法顯示,因為它包含錯誤。
這個問題可能有幾個原因,其中一些是:
輸出之前已經設置好了。
來自圖像生成的真正錯誤。
使用錯誤的圖像類型。
圖像庫未安裝。
輸出之前已經設置好了
即使不是故意的,也可能是這樣的情況,例如,其他先前的腳本最後包含空格 - 為了避免此錯誤,請確保按照PHP建議,不要使用PHP結束標記關閉腳本?>
然後,在使用頭函數之前,請使用以下代碼來確保先前設置的頭文件被丟棄
還有這個功能可以確保在標題和圖像之前沒有輸出
這解決了我的問題,並且圖像再次正確顯示。
來自圖像生成的真正錯誤
如果在圖像生成過程中出現真正的錯誤,請確保PHP設置為顯示所有可能的錯誤類型,並檢查相應的日誌,以便能夠追踪並解決它。
以下代碼將使PHP報告日誌中的所有錯誤:
由於服務器配置的原因,您可能會發現報告了一些錯誤,即使它們沒有出現在輸出html中。
使用錯誤的圖像類型
確保您使用的圖像類型是正確的,例如使用此代碼來區分png和jpeg。
根據使用的圖像生成功能,還要根據使用的輸出確保標題是正確的
圖像庫未安裝
確保圖像庫已安裝。為此,運行函數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是一家網絡出版和數字諮詢專業人員,通過技術專業知識和創新產生了全球影響。熱衷於賦予個人和組織在數字時代蓬勃發展,他被迫取得出色的成果,並通過創建教育內容來推動成長。