[PHP-users 34510] Re: 特定画像のimagecopyresampled失敗について

Yoshiaki Yanagimoto yanagimoto @ ask-art.jp
2009年 4月 10日 (金) 18:22:56 JST


柳本です。

WinXP PHP-5.2.5 Apache-2.2.11 の環境で試したところ

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg,
libjpeg: recoverable error: Corrupt JPEG data: 9 extraneous bytes before
marker 0xd9 in hogehoge.php on line 2

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]:
'hogehoge.jpg' is not a valid JPEG file in hogehoge.php on line 2

と出てきたのでEOIマーカー(FF D9)の手前9バイトを削ってみたところ、
エラーが出なくなりました。
そのカメラが不正なファイル吐いてるだけじゃないでしょうか・・・

a-nakamura さんは書きました:
> ナカムラです。
> 
> 特定画像のimagecopyresampledでの縮小で、問題が起き困っています。
> 同じ問題に遭遇された方や、解決方法をお知りの方がいらっしゃいましたら、
> お知恵をお貸しいただけると助かります。
> 
> 【内容】
> 下記ソースで問題なく画像の縮小が行えるのですが、
> あるデジカメ画像だけは縮小が行えず、できあがった画像が真っ黒という症状がおきています。
> 他のJPEG画像は問題ないのですが、あるカメラで撮った画像のみ発生します。
> ちなみに、$copy_img をimagecopyresampledせずにそのまま保存した場合は正常
> に保存されます。
> 
> 【環境】
> PHP Version 5.2.6
> GD Version bundled (2.0.34 compatible) 
> OS WindowsXp
> 
> 【ソース】
> 動作:$filenameの画像を指定サイズに縮小する
> 入力値:$filename=JPEG画像のファイルパス
> ---------------------
> //画像サイズ取得
> list($in_w, $in_h) = getimagesize($filename);
> 
> //縮小画像サイズ
> $out_w = 1280;
> $out_h = 900;
> 
> //画像オープン
> $copy_img = @imagecreatefromjpeg($filename);
> if ($copy_img) {
>   //縮小処理
>   $tmp_img = imagecreatetruecolor($out_w, $out_h); 
>   imagecopyresampled($tmp_img, $copy_img, 0, 0, 0, 0, $out_w, $out_h, $in_w, $in_h);
>   //保存
>   imagejpeg($tmp_img, $filename, 100);
> }
> ---------------------
> 
> imagecopyresampledを行わずに、$copy_imgをそのままimagejpegで
> 保存しますと、正常に保存されます。
> なので、imagecopyresampledになにかバグがあるのかと思って探したのですが
> 見つけられませんでした。
> 
> 画像データは以下にアップロードしております。
> http://www1.axfc.net/uploader/Img/so/42501.jpg
> 
> 撮影したカメラは、
> VISTAQUEST VQ1005
> で、ブラウザやビューアーや画像編集ソフトなどでは正常に表示されます。
> GDの問題ではなく、単純にカメラデータの問題かもしれません。
> ちなみに、同じカメラで撮った別の画像も同じ現象がおきています。
> ネット上で、同じ機種のカメラで撮ったとおもわれる画像では縮小は成功して
> いました。
> 問題の根本はPHPにはないかもしれませんが、お知恵を拝借したいと思います。
> よろしくお願いいたします。
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 



PHP-users メーリングリストの案内