2012-03-23 45 views
1

我花了我昨晚的時間來解決這個問題。PHP Imagepng輸出沒有在瀏覽器中顯示

我有一個PHP文件,應該返回一個PNG圖像與相關的標題。相關的文件內容基本上是。 (以前沒有輸出或空白標題語句之前)

header('Content-Type: image/png'); 

$img = @imagecreatefrompng($path); 

imagepng($img); 
imagedestroy($img); 

但瀏覽器(Firefox)說某事像有一個與圖像錯誤,因此無法顯示。

如果我將文件保存到另一個地方並使用FTP下載它,它會顯示出來。如:

imagepng($img, "/tmp/hedede.png"); 

如果我刪除頭文件並打印出文件內容,它將顯示帶有所有其他垃圾數據的PNG頭。如果我將此頁面保存爲瀏覽器中的PNG文件,則瀏覽器將不會顯示保存的PNG文件,但Irfanview會顯示它。

+1

從imagecreatefrompng刪除「@」,你可能有一個錯誤,你錯過了。 – slash197 2012-03-23 09:05:50

+0

是的,你可能會得到這樣的通知:'abc'不是有效的PNG文件 – hungneox 2012-03-23 09:11:20

+0

我刪除了「@」字符。但即使'error_reporting'被設置爲'(E_ALL)',我仍然沒有得到任何錯誤。我也確定輸入文件是一個有效的PNG,如果我使用瀏覽器直接調用該文件,我可以顯示它。 – noway 2012-03-23 09:23:34

回答

0

請檢查您的文件(在路徑中)MIME類型,不要相信文件類型的擴展名。希望能幫助到你。如果您的文件不是PNG圖像,則代碼無法正常運行,也不會顯示給定的圖像。

+0

我確定輸入文件是一個有效的PNG,如果我使用瀏覽器直接調用該文件,我可以顯示它。 – noway 2012-03-23 09:24:22

+0

haizz,如果你不檢查它的MIME類型,你不能確定它是否是有效的PNG。我可以將abc.gif文件更改爲abc.png並在瀏覽器中查看它。 – hungneox 2012-03-23 09:26:07

+0

謝謝,但如果我打印出沒有任何標題參數的文件內容,我可以看到以'‰PNG'開頭的文件內容。這就是爲什麼我認爲這是一個PNG文件。請讓我知道如何檢查MIME類型,如果我沒有以正確的方式做。 – noway 2012-03-23 09:34:07

-1

這是GD庫版本問題。

imagepng($resource) 

...工作舊版本的GD Libray。新版本將是:

imagepng($resource,"php://output") 
+0

呃?你從哪裏得到這個信息? – deceze 2013-03-11 08:03:47

相關問題