ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

iOS標準の「写真」アプリでの回転処理は画質が劣化するのかしないのか調べた

      2014/09/09

iPhoneで撮影した写真の縦横がおかしくなることがある

テーブルの上の物をiPhoneで撮影するシチュエーションなどで、写真の縦横がおかしくなってしまうことがあります。

以下の写真は、テーブルの上のiPhoneを横位置で撮影したつもりですが、縦位置の写真になってしまいました。

縦位置で持っていたiPhoneを水平にしてから回転すると、こうなりがちです。

IMG 0625

しかし、最近のiOS標準の「写真」アプリには、これを修正する機能が搭載されています。

「編集」をタップ。

IMG 0623 3

画面左下の回転アイコンをタップして修正できました。これを保存すれば修正完了。(続きは[Read More]から)

IMG 0624 4

回転処理で画質は劣化するのかしないのか

以前から、このiOS標準の「写真」アプリでの回転処理は、画質の劣化を伴うのか否かが気になっていました。

JPEGは非可逆圧縮の画像フォーマットですので、基本的には画質の劣化を通じてのみ画像の修正ができるわけですが、気の利いたソフトウェアには、メタデータ(EXIF)だけ変更する、あるいはDCT圧縮後のデータの並べ替えにより縦横を入れ替える手法による、無劣化での回転処理をするものがあります。

iOS標準の「写真」アプリがそれをやっているのかどうかが気になっていたわけです。


そこで、母艦に回転処理前と処理後の両方の画像を取得。

image_roration 14 09 08 18 15 2

そのファイルサイズを比較したところ、両者一致しました。圧縮率が同じなら、再圧縮をすれば画質の劣化でファイルサイズは小さくなりますので、iOS標準の「写真」アプリは回転処理だけなら画質の劣化は生じない、と結論付けてよさそうです。

これからは、ためらいなく回転処理できますね。

image_rotation 14 09 08 18 12 4

少し踏み込んだ確認

元の画像と、iOS標準の「写真」アプリで90度回転させて保存した画像を用意。

そのバイナリダンプを取得。

$ hexdump IMG_0621_org.JPG > IMG_0621_org.hex
$ hexdump IMG_0621.JPG > IMG_0621.hex

その差分を取ってみました。

$ diff -u IMG_0621.hex IMG_0621_org.hex

結果、違いは1バイトだけでした。(一部抜粋)

-0000030 00 03 00 00 00 01 00 08 00 00 01 1a 00 05 00 00
+0000030 00 03 00 00 00 01 00 01 00 00 01 1a 00 05 00 00

さらに、90度回転させたものをどんどん回転しては「保存」ボタンを押し、360度回して元の向きに戻したものとの差分を取ってみたところ、二つの画像のバイナリは完全に一致しました。

iOS標準の「写真」アプリでの画像回転は可逆的な変更を加えるだけなので、画質の劣化を心配する必要はありません。

 - iOS