2010/10/11

iPhoneと写真とMobileSafari

名詞3個を2つの「と」でつなげると「部屋とYシャツと私」みたいな詩的な感じになるから不思議である。

ぜんぜん詩的じゃねぇ

iPhoneのカメラと写真の挙動が変なのでそれを紹介したい。
ついでにMobileSafariってのはiPhoneのデフォルトのブラウザ(というかブラウザといえるのはコレしかない)なわけだが、コレの挙動が他のブラウザと明らかに違ったのでそれも紹介したい。

写真をメール

iPhoneで縦(iPhoneを傾けず)に撮った写真をメールで送ると、写真が横に倒れた状態で届くのはご存知だろうか。
まずはiPhoneで時計回りに90度ずつ回転させながら撮影した写真を見ていただこう。

以下の画像は撮影した画像と撮影時のスクリーンショットをメールで送信→Windows7のエクスプローラーで表示したものである。



この画像だけだとちょっとわかりづらいが、すべて被写体に向けてiPhoneを傾けながら撮影しており、被写体自体は動いていない。
本来スクリーンショットはどの向きで撮影してもホームボタン側が下の画像になるのだが、便宜上ここでは撮影時の状況にあわせて回転させている。
ちなみにこれはiPhoneの回転ロックをかけていてもかけていなくても変化がない。

唯一、左に90度傾けて撮影した画像だけがまともになっているのがおわかりいただけるだろうか。

写真をWindowsに取り込む

そしてこの傾きはWindowsで写真の取り込みをするときにも大きく関係している。

Windows7標準の機能で写真の取り込みをする場合、以下のメニューから行う。


このときのオプション設定に「読み込み時に回転する」というチェックボックスがある。


このチェックボックスはデフォルトではチェックされていないが、チェックしておかないと、「左に90度倒して撮影した画像」以外はすべて向きがおかしいまま取り込まれてしまう。

つまりこの傾きはメール云々の話以前に、おそらくiPhoneのデバイス内に保存されているときからそういう仕様なのであろうと推測される。

もちろんiPhone内の写真アプリなどで見る場合は元の向きで表示されるし、そんなことに悩まされることはない。
それになぜかMMSで送信した場合は正しい向きで届く。
しかも「読み込み時に回転する」で正常に取り込めるということは画像にはその傾きの情報も入っているに違いない。

ここで登場 Exif

メールで送信された画像ファイルのプロパティを見るとExifが埋め込まれているのがわかる。
(MMSで送信された画像にはExifが付いていないので注意)
Windows7のファイルコンテキストメニューのプロパティで見てもわからないのだが、写真管理のアプリなどで見てみると「画像方向」というところに値が入っている。

(XnViewというアプリで見たプロパティ)

参考までにこの値を見てみるとこんな感じ。
縦に撮影 → 右-上(6)
右90度  → 下-右(3)
逆さま  → 左-下(8)
左90度  → 上-左(1)

どうやらWindowsの取り込み動作時はこの値をもとに向きを修正しているようである。
私が使っているXnViewというアプリも恐らくExifを読んで正しい向きに表示してくれる。
(なお、iPhone内部での表示もこのExif情報を使っているのか、別にメタ情報を持っているのかは当然不明である。)


MobileSafari

この妙な仕様はかなり前からの仕様のはずであったが、あまり気づいていなかった。
Windowsでの写真取り込みが変なのも気づくきっかけだったはずなのだが、チェックボックスにチェックを入れて解決したことで安心してしまい、それ以上深堀しなかった。

ところが最近になって、「Webにアップした写真をChromeで見ると傾いてる」と嫁に言われ、「そんなことあるわけな・・・・いいっ?」的な展開で気づかされたのである。

そのアップされた写真は自分もiPhoneで見ていたし、特に問題なく見えていた。
つまり、Chromeでは傾いて見えるのだが、iPhoneのブラウザで見ると傾いていなかったのである。

調べてみると、MobileSafariの場合、画像単体を開いてもIMGタグ内であっても元の向きに直されて表示される。

くすぐられた好奇心のまま他のブラウザでどうなのかを調べてみたが、IE8, FireFox3, Chrome6, Opera10, そして Safari5、すべてにおいて傾きの修正は行われなかった。
前回のエントリはここにつながっていたのである。)

MobileSafariというブラウザがそういう仕様なのか、ブラウザ内で画像を表示するコンポーネントがそういう仕様なのかはやっぱり当然不明であるが、そういう独りよがりはよくないと思うぞ。


「Webにアップした写真」についてはWebアプリの修正をすることになったのだが、その話はまた今度。
君もiPhoneで撮った写真を人に送る時は気をつけてくれたまい。
そしてiPhoneから写真が送られてきた君はたとえそれが横に傾いていても生暖かい心で許してやってくれたまい。


追記 2010/10/13

UbuntuのFireFoxでも傾いて表示される。
友人に試してもらったところ、MacOSXのsafariではやはり傾いて表示される。
iPadだとiPhone同様に元の向きで表示される。

正直、ブラウザの仕様なのかOSの仕様なのか、ワカリマペン!

テスト表示用のページを用意しました

テストページ
Exifの文字をクリックすると、PHPで取得した画像のExif情報が表示されます。
その中の「["Orientation"]」が画像の向きを表している模様です。

.

0 件のコメント:

コメントを投稿