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

a-nakamura a-nakamura @ accent-inc.jp
2009年 4月 10日 (金) 17:29:44 JST


ナカムラです。

特定画像の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 メーリングリストの案内