iPhoneなどで撮影した写真を開くと、思った通りの向きで表示されないことがある。
私が直面したのは、iPhoneの写真アプリだと正しい向きで表示されるが、PS4のメディアプレイヤーだと変な向きで表示されてしまう、というもの。
PS4でも正しい向きで表示されるようにする、というお話。
2020.05.31 追記
zshスクリプトで実装してみた。
→https://github.com/hosota9/ImageRotation
どうして変な向きで表示されるのか?
iPhoneで撮影した写真はJPEG形式(もしくはそれに近い形式)で保存される。
JPEG形式の画像ファイルには、画像以外にも撮影日や撮影場所など様々な情報が記録されており、その中には撮影時のカメラの向き(回転情報)も含まれている。
この回転情報のおかげで、iPhoneを90°回転して撮影したとしても、表示するときにカメラの向きが考慮され、正しい向きで表示することができる。
ただし、世の中にはこの回転情報を無視して画像を表示するソフトがある。
PS4で変な向きで表示されたのは、これが原因と思われる。
どうすれば良いか?
画像自体を回転して保存し、回転情報を削除すれば、どんなソフトでも正しい向きで表示されるはず。
やってみた
回転情報の確認
まずはexiftool
というツールで回転情報(EXIF情報)を確認する。
Homebrewが入っていれば簡単にインストールできる。
$ brew install exiftool
回転情報は Orientation という項目に格納されている。
$ exiftool <JPEG画像ファイル名> | grep Orientation | awk -F": " '{print $2}'
Rotate 90 CW
"Rotate 90 CW" すなわち「時計回りに90°回転(して表示する)」の意。
画像自体の回転
画像自体の回転は、MacOSに標準で入っているsips
コマンドが利用できる。
時計回り90°回転する場合は、以下を実行する。
$ sips -r 90 <JPEG画像ファイル名>
回転情報の削除
ここまでの操作で、回転情報を無視するソフトで正しい向きで表示されるようになる。
ただし、回転情報を考慮するソフトでは変な向きになるため、回転情報を削除する。
回転情報を削除するには、exiftool
で Orientation を "1" すなわち「回転しない」に変更する。
$ exiftool -Orientation=1 -n <JPEG画像ファイル名>
以上です。