[写真] JPEG画像が環境によって変な回転をしてしまう件に対応する (imagemagick)

デジタルフォトフレームに画像(JPEG)を入れたのですが、なぜか表示した時変に回転している画像がありました。(Macでは回転していないのに...)
調べてみるとJPEGファイルに存在する闇を知る事になりました。

原因

画像ファイルに含まれるexif情報が原因でした。
iPhoneで撮った写真にはexif情報が付加されます。
後で画像を回転させた時には、exif内に回転情報が書き込まれます。
その画像をexif情報を読まない処理系で表示させようとすると、画像が回転しないので変になっていました。

対策方法

exif情報を削除するにはexiftoolコマンドで行えるのですが、今回の件は削除してもダメです。(画像が回転した状態な訳では無いので)
ImageMagickを使ってexif情報で画像を回転させて、回転情報を削除する事で今回の問題を解決する事ができました。

  1. imagemagickをインストールする

    $ brew install imagemagick
  2. -auto-orientオプションで画像を回転させる (mogrifyコマンドで元ファイルを直接書き換えています)

    $ mogrify -auto-orient IMG_0001.JPEG

画像が多い場合はコマンドで一気にやってしまいましょう。
(注意 以下のコマンドは元ファイルを全て直接書き換えてしまいます。)

$ find . -name "IMG_*.JPEG" | xargs -n 1 -I@ mogrify -auto-orient @

使ったフォトフレーム

使ったフォトフレームは、Amazonで安かったこれを使いました。
説明文からはわからなかったのですが、表示できるファイルは拡張子がJPEGでないといけません。
ファイルの拡張子がJPEGだと全て表示しようとするので、ゴミファイルなどが残っているとそれも表示しようとしてしまいます。(実際には表示できないので変な風に表示されます)
MacのFinderで操作したりすると、不可視ファイルで拡張子がJPEGなどが作成される場合があるので注意が必要です。

参考URL

写真の向きの補正(convert -auto-orient)
exif情報をコマンド一発で削除する

0 件のコメント :

コメントを投稿