JPEG画像の向きについて

「清水北山好会」のサイトに会員さんがアップしてくる画像の縦画像が時々横に倒れたままになっていることがある。ホームページ担当者になっているので、その都度正しい向きに修正してアップしている。

投稿してくれる会員さんがどのような手順でデジカメの画像をパソコンに落としているのか詳しいことは分からないが、投稿は私が作成した投稿ツール(M-tool)を使って投稿されているようだ。私も時々投稿しているがそうした不具合に遭遇したことがないので、他の会員さんがアップしたものは何故縦画像が倒れたままになっているのか、その経緯が良く分からなかった。そこでExif情報の仕組みについてネットで調べたみた。その結果は下記の通り。

■ ExifのOrientationの値

Orientation
の値
補正方法画像の行と列の位置ExifReader
の表記
IrfanView
の表記
1補正しない0番目の行が上、0番目の列が左左上Top left
2上下反転0番目の行が上、0番目の列が右
3180度回転0番目の行が下、0番目の列が右右下Bottom right
4左右反転0番目の行が下、0番目の列が左
5上下反転+時計周りに270度回転0番目の行が左、0番目の列が上
6時計周りに90度回転0番目の行が右、0番目の列が上右下Right top
7上下反転+時計周りに90度回転0番目の行が右、0番目の列が下
8時計周りに270度回転0番目の行が左、0番目の列が下左下Left bottom

テストに使用したカメラは、Canon PowerShot S5IS、Canon PowerShot G7XⅡ、スマホarrowsM03、の3台を使ったが、Canonの2台はカメラを逆さにして撮影した場合(180度回転)は正対して撮影した場合(補正なし)と同じExif情報が記録されるらしい。従ってPC画面には逆さの画像が表示される。スマホの場合は上下が正しい位置の画像が表示された。

また、上の表の中で ExifReader の表記のOrientationの値が6の場合、3の場合と同じ「右下」となっているが「右上」の間違いだと思う。IrfanView の表記の方が正しいと思う。

参考にしたサイト
  1. http://dqn.sakusakutto.jp/2009/02/jpegexiforientaion.html
  2. http://hsm.on.coocan.jp/digicame-exif.htm
  3. http://daredemopc.blog51.fc2.com/blog-entry-804.html

さて、以上の予備知識を元に、アップした縦画像が横に寝てしまう原因を考えてみた。
先ず、投稿ツール(M-tool)は、セキュリティ上の配慮からExif情報を削除してアップするようにしてある。
従って投稿者が縦画像だと思って投稿した画像が横に寝てしまう直接的な原因は、投稿した画像がもともと横に寝ているためだと思う。(M-toolは縮小およびExif削除はするが、その他の加工はしていない)

では何故、投稿者が縦画像だと思った画像が横画像としてアップされるのか? それは

■ パソコン画面に表示された画像と画像本来の向きが違うことが原因

  1. デジカメの中では画像はCMOS自体に縦に写っている訳ではなく、CMOSには縦・横の区別はなくすべて同じように写っている。これはフィルム時代から変わりはない。
  2. 縦横を判断するのは、最終的には人間が画像を見て判断しているが、デジカメの場合は昔のように印画紙に焼き付けることは少なく、ディスプレーで見る機会が多い。
  3. そのため縦画像は縦表示しないと見にくい。(画像の回転操作が必要)
  4. この回転操作を自動化するため、最近のデジカメやスマホには重力センサーが付いていて、Exif 情報に撮影時のカメラの向きを記録し自動で回転表示する機能がある。
  5. その情報は、Exif の Orientation の値として記録される。(上記の表参照)
  6. パソコン画面に「縦画像」として表示されている画像には、2種類ある。
    a. Exif 情報によって90度回転して表示している場合
    b. 画像そのものが縦画像に修正してありExif情報に依存していない場合
  7. 上の 4-a の場合は、Exif 情報を削除すると90度回転して表示することができなくなり、元の横に倒れた画像に戻ってしまう。
    4-b の場合は Exif 情報が削除されても回転が戻ってしまうことはない。

そこで、この縦・横の問題はどのようにして発生するのか、私が投稿している記事の元画像を見てみることにした。
現在の Windows10 に添付されているピクチャツールで表示しても、縦画像はすべて縦に表示しているため、Exif 情報に基づいて縦に表示しているのか、元々縦画像に直してあるのかの区別はつかない。
そこで先ほどダウンロードした ExifReader で Exif を見てみることにした。その結果は下記の通り。

<1><2>

Exif情報によって縦表示の場合(サムネイルは倒れている)

画像そのものが縦画像の場合①(サムネイルも縦表示)
<3><4>

画像そのものが縦画像の場合②(サムネイルも縦表示)

横画像の場合

上の ExifReader の画面は情報が多く比較しにくいので、下記に整理して表にした。

番号画面下の説明サムネイルExifの画像方向縦に加工したソフトウェア
1Exif情報によって縦表示の場合倒れている右下なし
2画像そのものが縦画像の場合①縦表示左上Microsoft Windows Photo Viewer
3画像そのものが縦画像の場合②縦表示左上Adobe PhotoShop Elements
4横画像の場合横表示左上なし

私のパソコン内には、縦表示される画像は上の表のように1番から3番まで3種類あることが分かった。
この内、実際にホームページにアップしてある縦画像は 2番または 3番だけで、Exif 情報で縦表示している 1番の画像は使っていなかった。

今回分かったことは、Windows付属のビュワーで縦画像を自動で回転表示するようになったのはWindows8 からだそうだ。
https://kaede.jp/2015/05/07011215.html
http://happyhiro.com/wp4dev/tips/diff_windows10_7explorer_img.html
すっかり忘れてしまっていたが、それ以前のWindows7 までは自動で回転せず、手動で回転していたようだ。Windows7 のビュワーは Microsoft Windows Photo Viewer を使っていた。この場合、表示を90度回転して縦表示にすると Exif が書き換えられていたらしい。(https://srad.jp/~kineko/journal/510364/

つまり、Windows7 以前は、自分が投稿しようと思った画像は Microsoft Windows Photo Viewer を使って手動で縦画像に直していたことになる。この時、意識していなかったが、縦にした画像が正画像として保存され Exif も書き換えられていたということのようだ。そういうこととは知らずに便利に使っていた。

■ アップした縦画像が横に倒れる原因と対策

Windows8 以降のOS付属のビュワーは、Exif の Orientation の値に従って、画像を自動回転して表示すると共に、ユーザーが知らない内に Exifを書き換えることはしなくなった。
そのため Windows8 以降は縦画像が縦に表示されているからと安心して、そのまま M-tool に通してアップロードすると、Exif 情報が削除されるため、縦画像の回転が戻ってしまって横に倒れることになる、ということが判明した。

原因が分かったので対処法を考えてみた。

  1. 投稿ツール(M-tool)にExif のOrientationの値が 1以外の値の場合は、画像方向を回転して正常に表示されるよう加工する機能を追加する。しかし、これはなかなかハードルが高く、直ぐにはできない。
  2. PhotoShop や ペイントなど画像加工ソフトで縦表示に表示した状態で保存する。(これでExif は1に書き換えられる)
  3. Windows7に標準添付されていた Windows Photo Viewer を使う。(Windows10 にもインストールされているが、使えないようになっている。使うためには下記を参考にレジストリを変更する必要がある。これもややハードルは高い。
    https://i-bitzedge.com/tips/how-to-use-windows-photo-viewer-in-windows-10
  4. Windows10 のビュワー「フォト」を使う。
    a) 色や明るさ、傾きなどを修正して「保存」する
    b) 修正する必要がない画像の場合は「クロップと回転」を選択し、何も操作しないまま「保存」する
    この何れかの操作で、縦位置を正画像として保存し、Exif 情報も1に書き換えられる。

ということで、4番の Windows10 のビュワー「フォト」を使って「保存」をクリックするのが最も簡単だということが分かった。

データ
  • 2017.05.03(水)

 

アーカイブ

現在位置: ホームなんでも日記メニュー > このページ