2012-03-23 22 views
1

私はこの問題を解決するために私の最後の夜を過ごしました。PHP Imagepngの出力がブラウザに表示されません

関連するヘッダーを含むPNG画像を返すはずのphpファイルがあります。関連するファイルの内容は基本的にです。画像との誤差、したがって、それは表示されませんがあるように(ヘッダ文の前には、以前の出力または空白)が

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

$img = @imagecreatefrompng($path); 

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

しかし、ブラウザ(Firefoxは)STHは述べています。

ファイルを別の場所に保存してFTPでダウンロードすると、そのファイルが表示されます。 Like:

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

ヘッダーステートメントを削除してファイルの内容を出力すると、他のすべてのガベージデータとともにPNGヘッダーが表示されます。このページをPNGファイルとしてブラウザに保存すると、ブラウザには保存されたPNGファイルは表示されませんが、Irfanviewには表示されます。

+1

削除「@」imagecreatefrompngから、あなたが不足しているが、エラーがあるかもしれません。 – slash197

+0

はい、次のような通知が表示されることがあります: 'abc'は有効なPNGファイルではありません – hungneox

+0

「@」文字を削除しました。しかし、 'error_reporting'が'(E_ALL) 'に設定されていても、私は何のエラーも出ませんでした。また、入力ファイルが有効なPNGであることを確信しており、ブラウザを使用してそのファイルを直接呼び出すと表示できます。 – noway

答えて

0

(パス内の)MIMEタイプを確認してください。拡張子でファイルタイプを信頼しないでください。それが役に立てば幸い。ファイルがpngイメージでない場合、コードは正しく実行されず、指定されたイメージは表示されません。

+0

私は入力ファイルが有効なPNGであると確信しています。ブラウザを使用してそのファイルを直接呼び出すと表示できます。 – noway

+0

haizz、それはあなたがそのMIMEタイプをチェックしないと、それが有効なPNGであるかどうか確信が持てません。 abc.gifファイルをabc.pngに変更してブラウザで見ることができます。 – hungneox

+0

ありがとうございます。しかし、ヘッダーパラメーターを指定せずにファイル内容を出力すると、 '‰PNG'で始まるファイルの内容を見ることができます。だから私はそれがPNGファイルだと仮定しています。私が正しい方法でそれをやっていないなら、私はMIMEタイプをチェックする方法を教えてください。 – noway

-1

これはGDライブラリのバージョンの問題です。

imagepng($resource) 

...作業古いバージョンGD Libray。新バージョンは、次のようになります。

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

Wut?どこからこれを取得しましたか? – deceze

関連する問題