iPhone で写真を表示しようとすると写真の向きでいつも問題を起こす。その対策。
まず EXIF 情報を知るためにツールを導入。
Exiftool
$ sudo apt-get install libimage-exiftool-perl
# または
$ sudo yum install perl-Image-ExifTool
使い方
$ exiftool apple.jpg
ExifTool Version Number : 8.60
File Name : apple.jpg
Directory : .
File Size : 17 kB
File Modification Date/Time : 2015:05:28 10:10:42+09:00
...
問題探究
いま、iPhone である写真が天地反転して表示されてこまっている。PC では問題ない。
その写真を Exiftool で調べると、
Orientation : Rotate 180
であった。怪しい。
そこで、ImagickMagick で
mogrify -auto-orient hoge.jpg
した(mogrify は convert と機能は同じだが、直接対象ファイルを書き換える)。
すると結果は、
Orientation : Horizontal (normal)
おお、変わった。今度はよさそう。
iPhone で見てみる。がーん、変化なし。というか、PCでさえも反転するはめに…。かえって事態が悪化した。
いろいろ調べたのだが、どうも写真によってうまく行くものと行かないものがあるらしい。うーん。なんだかな・・・。
【後日談】
…と絶望に満ちたところで、先日は筆を折った。その後、執拗に調べた結果、次のようなことがわかった。
問題を引き起こしていたのは「生の画像自体はまっすぐに正しく配置されているが、余分な EXIF 情報が付いているために、それを適用すると転倒して見える」ような画像があるためだった!!
おそらくこれはこういうことだと思われる。
- iPhone 等で写真撮影する。生の画像は転置していて、補正すると、まっすぐになるように EXIF Orientation が設定される。
- それを EXIF Orientation を認識しない画像操作ツールで見る。すると転倒しているので、生の画像自体を回転してまっすぐにする。だが、EXIF Orientation は変更されないままである。
-
- の写真を EXIF Orientation を認識する画像ビューアーでみると転倒して見えるようになる。
iPhone が典型だが、こういう EXIF Orientation を活用するタイプのカメラで撮影すると、生の画像そのものは転倒していることが多い。それでも、EXIF Orientation は正しく設定されているので、これを適用すれば正しく表示できるだろう。
問題は、おそらく、EXIF Orientation を認識しない画像加工ツールがあるらしいことだ。具体例は知らないのだが、それらの存在を仮定しないと腑に落ちない。いずれにしろ、何らかの理由によって、EXIF Orientation が正しく設定されていない画像が流通していて、それらが、iOS のブラウザで見たとき、問題を起こすのだ。
本当、EXIF Orientation は不幸の元でしかない気がする…。こんなの撤廃してしまおうよ。