見出し画像

Exif ファイルの覗き方 OLYMPUS OM-D E-M1X の JPEG

バイナリーエディターを使って画像ファイルを覗いてみた。

サンプルファイルは、OLYMPUS OM-D E-M1X で撮影した Raw データを、OM Workspace を使って JPEG に書き出したもの。
OM SYSTEM OM-1 と違うところがあった。

ファイル名および撮影情報

20201016_114956_PA160433.jpg, 2020-10-16 11:49:56, E-M1X, OLYMPUS M.60mm F2.8 Macro, F8.0, 1/250sec, ISO1250

記載したデータについて

文中に画像として貼り付けた罫線のない表がデータの説明である。

左端:アドレス(10進表記)
中央:データ(16進表記)
右端:簡単な説明

表のデータ部のうち、IFD のデータエントリー(12バイト)については、次のように4つに区切って表示した。

1111 2222 33333333 44444444
  1. タグ(2バイト)

  2. タイプ(2バイト)

  3. データの個数(4バイト)

  4. データまたはデータへのオフセット(4バイト)

一塊のIFDの構成はつぎのとおり

  • 先頭の2バイト:エントリーの個数

  • 続くデータ:個数分のデータエントリー(1個あたり12バイト)

  • 最後の4バイト:データの終端または継続データへのオフセット

ヘッダー部

アドレス 16 の行、正しくは Vertical Resolution です。
アドレス 19 の行、Ssize ではなく、Size です。

アドレス30が 4d4d なので、ビッグエンディアンで書かれている。

プライマリーエントリー

アドレス 34 に最初のデータへのオフセット 00000008 が書かれている。このオフセット値の基準となるのは、Exif 識別コードの次のバイトオーダーが書かれたところである。この場合、30 である。
最初のデータの先頭は、そこから8バイトオフセットしたところになるので、30 + 8 = 38 である。

Exif IFD

プライマリーエントリーの 8769(アドレス172)が Exif IFD へのポインターである。
最後の4バイト 00000120 は、データへのオフセットである。16進の 120 は 10進表記では 288 である。
アドレス30から 288 オフセット、つまりアドレス 318 が Exif IFD の先頭である。

GPS IFD

プライマリーエントリーの 8825(アドレス184)が GPS IFD へのポインターである。
最後の4バイト 000002fc は、データへのオフセットである。16進で 2fc は10進では 764 である。
アドレス30から 764 オフセット、つまりアドレス 794 が GPS IFD の先頭である。

メーカーノートは記録されていなかった。

データまたはデータへのオフセットということ

1個の IFD エントリーのサイズは 12バイト。その最後の 4バイトには、データかデータへのオフセットのどちらかが書かれている。データが 4バイトに収まらない場合には、オフセットが書かれているのである。
データのタイプ別に、データ1個あたりのサイズ(バイト)が決まっている。遠tリーには、データの個数が描かれているので、サイズ×個数で、トータルのデータサイズがわかる。それが4バイトを超える場合、データは別な場所に書かれ、4バイトには、オフセットが書かれるわけである。
オフセットが書かれている場合には、基準の位置からオフセットした場所にデータを読みにいく必要がある。

参考

デジタルスチルカメラ用画像ファイルフォーマット規格 Exif 2.3

https://www.cipa.jp/std/documents/j/DC-008-2012_J.pdf


Exif について大部理解が進んだと思うので、記事にまとめた。
まだまだ間違って解釈しているところがあるかもしれない。

t.koba


この記事が気に入ったらサポートをしてみませんか?