EXIFファイル入門 |
IFD領域 |
最終更新日:2006/10/25 |
●IFDの基本形式
IFDは、頭にそのIFDに存在する要素(ディレクトリエントリ)の数があり、その数だけディレクトリエントリが続く。最後に、4バイトの次のIFDへのリンクポインタがある。リンクポインタが0の場合は、次のIFDがないことを示す。必要なら、そのIFDのデータ領域が続く。
○ディレクトリエントリ
この部分が、情報部分となる。合計12バイトで以下の構造を持っている。
TTTT FFFF NNNNNNNN DDDDDDDD
TTTT
:UInt16で表されたタグ番号で、規格で定義されている
FFFF
:UInt16で表されたデータ形式で、1〜12まである(下表参照)
NNNNNNNN:UInt32で表されたデータ数(バイト数でなはく、データの個数)
DDDDDDDD:4バイトで表されたデータで、データが4バイト以下ならデータそのもの。
4バイトを超える場合は、データへのポインタとなる。ポインタはTiffヘッダから数えた値となる。
Value |
Format |
Bytes |
1 |
unsigned byte(UInt8、バイト) |
1 |
2 |
ascii strings |
1 |
3 |
unsigned short(UInt16) |
2 |
4 |
unsigned long(UInt32) |
4 |
5 |
unsigned rational(UInt32分数) |
8 |
6 |
signed byte |
1 |
7 |
undefined(任意) |
1 |
8 |
signed short(Int16) |
2 |
9 |
signed long(Int32) |
4 |
10 |
signed rational(Int32分数) |
8 |
11 |
single float |
4 |
12 |
double float |
8 |
表 EXIFで定義されたデータ形式
グレーの部分はEXIFでは使用されない形式。
Bytes数は、その形式のデータ1個当りの長さ。
複数のデータがある場合もある。F=5でN=4では、8×4で、32バイトのデータとなる。
ascii stringはnull(h00)で終端し、nullも数に含まれる。
●IFD領域全体像
IFDには、IFD0、EXIF Sub IFD、Interoperability IFD、MakerNote
IFD、IFD1などがある。全てが必ず存在するとは限らない。全てLinkまたは内部にあるTagによって手繰れるようになっている。下図参照。
|