見出し画像

Exif ファイルの覗き方 Nikon D800E の JPEG

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

サンプルファイルは、Nikon D800E で撮影した Raw データを、NX Studio を使って JPEG に書き出したもの。
D500も似たようなものだった。

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

20220116_094648_DSC_8354.JPG, 2022-01-16 09:46:48, NIKON D800E, , F2.8, 1/125sec, ISO3200

記載したデータについて

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

左端:アドレス(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 です。

ファイルの先頭が、SOI、ファイルの始まりを示すマーカーである。
APP0 セグメントとAPP1 セグメントがそれに続く。
アドレス 30 に 4949 とあり、リトルエンディアンで書かれていることを示している。このアドレス 30 が、Exif 関連のオフセットの基準位置である。

プライマリーエントリー

アドレス 34 に最初のデータへのオフセット 08000000 が書かれている。ビッグエンディアンに直すと 00000008 である。10進数表記は、8。
最初のデータの先頭は、そこから8バイトオフセットしたところになるので、30 + 8 = 38 となる。

データの最後に 92100000 とあったので、データがまだあると思い、オフセット先を読みに行った。が、そこには意味のわからないデータが書かれていた。
アドレス 196 のタグが、2588、ビッグエンディアンに直すと 8825 である。これは GPS IFD へのポインターを表すのだが、調べた限りでは、8825 より後(数字が大きな)のタグは互換性 IFD へのポインター(A005.H)くらいと思われた。
よって、8825 か、A005 がある場合には A005 をエントリーの最後とみなして良いと思われる。

Exif IFD

プライマリーエントリーの、6987(ビッグエンディアンで 8769)が Exif IFD へのポインターである。
データは、94010000。ビッグエンディアンに直すと、00000194、10進表記では、404。基準位置が 30 なので、Exif IFD の始まりは、30 + 404 = 434 である。

GPS IFD

プライマリーエントリーの、2588(ビッグエンディアンで 8825)が GPS IFD へのポインターである。
データは、fa030000。ビッグエンディアンに直すと、000003fa、10進表記では、1018。基準位置が 30 なので、30 + 1018 = 1048 が GPS IFD の先頭である。

MakerNote IFD

Exif IFD の 7c92(アドレス 616)がメーカーノートへのポインターである。オフセットは 0c040000(ビッエンディアン 0000040c)、10進表記は 1036。30+1036 = 1066 がメーカーノートの先頭である。

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

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





















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