- Part 1 : Baseline TIFF
- Part 2 : TIFF Extexsions
- Part 3 : Appendices
と TIFF を扱うソフトウェアで最低限の仕様を定めています。ここではTIFF のコアである Baseline TIFF を中心に、定義されている内容についてみていきたいと思います。
TIFF Structure
TIFF は1次元(イメージ自体は二次元)でデータを表現しています。オフセットは 1byte を単位として0からN番目まで最大2の32乗の長さをもつことができます。つまりひとつのファイルサイズは最大で 4GB になります。
ファイルはイメージ・ファイル・ヘッダと呼ばれる、8バイトのファイルの構造自体を記述したヘッダから始まります。このヘッダにはイメージ・ファイル・ ディレクトリ(Image File Directory : IFD)という実際の画像がどう再現されるべきかの情報を含んだ領域へのポインタが含まれています。
TIFF Revision 6.0 Section 2 Figure 1 より転載
Image File Header
Bytes 0-1 | ファイルで使用されているバイト・オーダです。”II”(4949)はリトル・エンディアンで”MM”(4D4D)はビッグ・エンディアン。これ以降ファイルのバイト・オーダはここの値によります。 |
Bytes 2-3 | TIFF ファイル識別のための数字 ”42”。仕様書には ”任意だが慎重に選ばれた数字” となっています。このことでしょうか? |
Bytes 4-7 | 最初の IFD へのオフセット。IFD はヘッダの後ならどこにあってもかまいませんが、ワード(16 ビットごと?)の境界から始まらなければなりませんとあります。ちなみに Photoshop で作成した TIFF の IFD はヘッダの直後に、Mac のプレビューではファイルの後方に IFD をおいています。 |
Image File Directory
IFD は ”IFD エントリ” と呼ばれるタグとタグについて情報を格納する場所です。最初の2バイトは IFD エントリの数になります。2バイトでなので、最大エントリ数は65535個です。
IFD エントリはひとつの IFD エントリは12バイトで構成されています。最後にもしあれば次の IFD へのオフセットが4バイトで格納されています。なければこの値は4バイト分すべて0になっていなければなりません。
TIFF の IFD と IFD エントリに関して、次のように
となっています。
それぞれの IFD エントリのデータフィールドは次のようになっています。
Bytes 0-1 | このエントリを識別するタグです。 |
Bytes 2-3 | このエントリの値がどんなデータ型で表現されているかを示しています。 1から12までの数値でそれぞれのデータ型を定めてあります。 |
Bytes 4-7 | カウント。このエントリがもっているデータの数です。 |
Bytes 8-11 | エントリの値または値のオフセット。データ型の長さとカウントをかけ合わせた数値バイトがこのフィールドに収まる(4バイト以下で表現できる)ならば、その値が格納さています。そうでない場合はここにはオフセットが格納されています。実際のデータはオフセットが示す位置から、データ型とカウントをかけ合わせた数値バイト分だけ格納されています。 |
データ型は次のように定められています。
1 | BYTE | 1バイト符号なし整数 |
2 | ASCII | 1バイトの ASCII 文字。 |
3 | SHORT | 2バイト符号なし整数 |
4 | LONG | 4バイト符号なし整数 |
5 | RATIONAL | 2つの LONG 型で表現される8バイト分数。最初の4バイトが分子を表し、次の4バイトが分母を表しています。 |
6 | SBYTE | 1バイト符号付き整数 |
7 | UNDEFINED | ただ単に1バイトのデータ |
8 | SSHORT | 2バイト符号付き整数 |
9 | SLONG | 4バイト符号付き整数 |
10 | SRATIONAL | 2つの SLONG 型で表現される8バイト分数。最初の4バイトが分子を表し、次の4バイトが分母を表しています。 |
11 | FLOAT | IEEE 方式の 4バイト単精度浮動小数点 |
12 | DOUBLE | IEEE 方式の 8バイト倍精度浮動小数点 |
Multiple Image per TIFF File
TIFF はそれぞれの IFD でサブファイルを持つことができるので、ひとつのファイルで関連するイメージをいくつも持つことができますが Baseline TIFF で規定されたリーダでは IFD を1つだけ読み込めばよいとしています。
Baseline Field Reference Guide
ここからは Baseline TIFF で使用する36個のすべてのエントリ・フィールドの定義についてみていきます。ファイルのなかにここにあるエントリ・フィールドが存在しない場合は
デフォルト値を仮定しているとすること、とあります。
-------途中。順次改訂します---------
0 件のコメント:
コメントを投稿