モバイル版Chromeにおける帯域圧縮時のEXIF欠損について

概要

モバイル版Chromeには「データ使用量を節約」という機能があり、訪問先ページの内容をGoogleサーバ経由で圧縮することで、データ使用量を節約できます。
しかし、圧縮処理によりJPEG画像からEXIFデータが削除されるため、ブラウザ側でEXIF情報にもとづく各種画像処理ができなくなってしまいます。
個人的には、画像については、画像データは再圧縮しても、EXIFデータ(少なくとも画像の回転情報のみ)は残すほうが良いのではないかと考えています。

EXIFのOrientation

EXIFにはOrientationというタグがあり、画像の回転方向の情報が記録されています。
大抵の場合、デジタルカメラで縦位置で撮影をした場合には、画像データ自体は横向きのままで記録され、EXIFデータに180度または270度回転しているという情報が記録されます。
縦位置で撮った写真をパソコンで見た時に横倒しになっていることがありますが、これは使っている画像ビューアがEXIF情報を無視しているためです。画像を正しく回転して表示してくれるビューアもたくさんあります。

EXIFの活用

デジタル一眼で撮った写真をWeb上で扱う際に、事前にリサイズ等するのであれば、その際にEXIF情報をもとに画像を回転しておけば、EXIFデータが無くなったとしてもあまり問題はありません。
一方、撮影したデータをそのままWeb上で共有して人に見てもらったりという場合には、EXIFデータが役立ちます。実際、自分の利用シーンとして、デジカメで撮った写真をそのままサーバにアップロードし、実家の両親に共有するということもよくあります。
また、写真共有サイト等であれば、EXIF情報をもとに、カメラ機種や撮影時の情報(画角やF値)等を表示していることが多々あります。

EXIF削除による弊害

以前の記事、Mobile Safariによる画像の向き補正でも記載していますが、Webサービス等でEXIFの画像回転方向にもとづく処理を実施している場合、データ圧縮によりEXIF情報が削除されると画像の向きを正しく表示できなくなってしまいます。また、回転方向の情報自体が失われているため、根本的な対処が難しくなります。

CSSのimage-orientation属性

さらに、現状ではFirefoxのみの対応ですが、CSSにimage-orientationという属性があります。画像の回転方向を指定する属性で、この値を”from-image”にした場合は、画像をEXIF情報にもとづいて回転させるという仕様になっています。
今後、Firefox以外のブラウザもimage-orientation属性に対応していったとすれば、データ使用量を節約時のChromeのみ挙動が異なってしまうという状況に拍車がかかることも想像できます。

結論

これらを踏まえると、帯域圧縮は大事だが、データ使用量を節約する場合もEXIFの画像回転方向の情報のみは残しておいたほうが良いのではないかと思います。
そうなれば、私が助かりますし、Web上で画像のEXIF情報を扱っている多くの人が助かると思います。

2015/02/09追記
Google社員の方に本件について聞ける機会があり、その際の話を記事にしています。
Cache-Control: no-transform で各種メディアの変換(再圧縮等)を防ぐ
結論としてはタイトルのとおり、画像のEXIF情報を保持したい場合はサーバ側のHTTPレスポンスヘッダでCache-Control: no-transformを指定するのがよいという内容です。

参考URL

image-orientation – CSS | MDN
ブラウザーと画像のEXIFのお話

シェアする

  • このエントリーをはてなブックマークに追加

フォローする