TIFFファイルがLZW圧縮を用いている場合、2003/08/05現在米ユニシス社の特許 (所謂 "GIF の圧縮特許問題" として有名) に抵触するのでTIFFファイルの圧縮フォーマット記述箇所を調べたので覚書。
なお、不明な点などありましたら、TIFFの規格書 (PDF) をお読みください。
データは上位、下位の順序で記述される。
例えば "1" を2Byteで記述すれば #0001 である。
データは2Byte単位で下位、上位の順序で記述される。
例えば "1" を2Byteで記述すれば #0100 である。
TIFF Revision 6.0 Specification (Final - June 3, 1992) では固定値 "42" (#2A)が記述される。
バイトオーダーと合わせれば、ファイル先頭4Byteは #4D4D002A か #49492A00 となる (これ以外の値を格納するファイルは本解説のTIFF形式と互換性のないフォーマットである)。
目的である Compression 情報が格納された IFD の位置が記述されているので確認する。
例えばバイトオーダー II で #08000000 であれば以降08Byte目を起点とする。
IFD 起点アドレス + 2 + 12 * n (n は 0 以上の整数) Byte目から始まる 259 (#0103) のデータを確認する。
例えば起点アドレスが 8 の場合 10(#0A), 22(#16), 34(#22), 46(#2E), 58(#3A), 70(#46)……が調査の対象となる。
また、259 (#0103) もバイトオーダーに従い、II なら #0301 となっている事に注意する。
Compression Tagから始まる12Byteは以下の構成になっている。
とはいえ、人間がコードエディタなどでTIFFファイルを開いて調べるにはあまりに面倒なので、簡易判別法も。
MM
なら #010300030001
を、II
なら #030103000100
を検索する。