人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://q.hatena.ne.jp/1242705460
をテストしています。
なぜかPNG画像だけ「壊れている」とエラーになりますが、考えられる原因はなんでしょうか?
phpinfo()でGDを見ると、PNG Support もenabledになっています。

●質問者: P-mako
●カテゴリ:インターネット ウェブ制作
✍キーワード:Gd PNG エラー テスト 画像
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● どうもと
●10ポイント

ファイルをアップロードした際に、画像ファイルが壊れてしまった可能性はないでしょうか?

thumbnail.inc.phpを使って、当方の環境(ローカルのxamppとwebarena)では問題なく動作しました。

include_once('thumbnail.inc.php');

$thumb = new Thumbnail('./cap319.png');

$thumb->resize(500,500);

$thumb->show();

?>

使用した画像はコレです( ̄ー ̄)ノ。http://doumoto.s9.xrea.com/work/cap319.png

xreaではグローバルレジスタか、phpのバージョンの絡みで、スクリプトでエラーが出ました。

◎質問者からの返答

画像は直接表示可能ですし、同階層に保存したjpg、gifは問題なく(直接でもDG経由でも)表示されます。

> xreaではグローバルレジスタか、phpのバージョンの絡みで、スクリプトでエラーが出ました。

グローバルレジスタがどういう設定だとエラーが出るんでしょうか?PHPバージョンはいくつだとエラーになりますか?

またそれぞれエラーとはどういうメッセージでしょうか?


2 ● tdoi
●60ポイント

まず、確認です。

http://q.hatena.ne.jp/1242705460

をテストしていますとのことですが、ベストアンサーの方のように自分でサムネイルを作成しているのではなく、doumotoさんが回答された

http://www.gen-x-design.com/projects/php-thumbnailer-class/

のライブラリを利用しているということでよいでしょうか?

もし、ベストアンサーの方の方法のように自分でサムネイルを作成しているのであれば、そのソースを見せて頂かないとなんともいえません。ぱっと想像がつくのは、Content-typeの設定がおかしいくらいでしょうか。


さて、thumbnail.inc.phpを利用している場合についてですが、ライブラリのソースもざっと眺めましたが、特別問題はない気がします。

まずは、プログラム的に処理に失敗しているのか、出力はちゃんとされているが、ブラウザで表示されないのかを確認した方がよいでしょう。

まずは、次のような感じでライブラリの処理中でエラーが起きていないかを確認してみてください。

include_once('thumbnail.inc.php');
$thumb = new Thumbnail('画像ファイルパス');
$thumb->resize(500,500);
if ($thumb->error) {
 echo $thumb->errmsg;
} else {
 $thumb->show();
}

で、これでエラーメッセージが表示されるようなら、それで原因の1つは判明するでしょう。

これで何もでないようであれば、少なくとも、このライブラリは出力しようとしているはずです。

内部的には、showという関数の中で、ImagePng()で出力しています。

このライブラリはここのエラーチェックはしていないので、ちょっと汚いですが、ライブラリのコードを変更してImagePng()がTRUEを返すことを確認してみてください。

ここまで問題がなければ、プログラム的には正しいレスポンスを返していると推定されます。


となると、その他の要因によって表示されないと思います。

例えばですが、まず問題ないと思いますが、PNGの扱いがブラウザによって一部問題もあるようなので、他のブラウザで実行してみると結果は違うかもしれませんね。

http://www.remus.dti.ne.jp/~a-satomi/bunsyorou/PNG_descript.html...


まず、こんなところまで確認してみてはいかがでしょうか?

それで問題が分からなければ、ある程度書いたコードを公開していただければ、もう少しコメントできるかもしれません。

あと、コメントあけてもらった方がいいです。


何かの参考になれば。

◎質問者からの返答

長文のご回答ありがとうございました。

ご指摘のようにNGなソースを提示すべきでした。

いろいろ丁寧に解説いただいて申し訳ありませんが、非常にPoorなミスで自己解決しました。

イメージ出力用の

ImageJpeg($dst, null, 100);

から、まったく調べずに

ImagePng($dst, null, 100);

としていたのが誤りだったようでして、

ImagePng($dst);

とすべきだったようです。(つまりパラメータが冗長だった)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ