TIFF では、メタデータがファイルそのもの
他の形式はメタデータを外付けします。JPEG は APP1 セグメントの中に TIFF ブロックを置き、HEIC はアイテムとして持ち、PNG はチャンクを発明しました。TIFF にセグメントがないのは、必要がないからです。ファイルは 8 バイトのヘッダで始まり、そこから Image File Directory を指します。そのディレクトリはタグの一覧であると同時に画素への索引でもあります。他のどこかで EXIF を読むとき、あなたは別のコンテナに写された TIFF の断片を読んでいます。
バイト順は宣言されるもので、前提ではない
TIFF は II か MM——Intel か Motorola、リトルエンディアンかビッグエンディアン——で始まり、続けてその順で数字の 42 を書きます。最初の 2 バイトを正しく読めたかの自己確認です。そのあとのすべて、すべてのオフセットと整数はその順で読まれます。だから同じタグが 2 通りのバイト配置で保存され得ますし、途中で切れた TIFF がここまで完全に読めなくなるのもこのためです。ヘッダを失えば、ファイル中のオフセットを 1 つも解釈できません。
1 つのファイル、複数のディレクトリ
IFD はつながっています。それぞれの末尾が次の位置か、ゼロを持ちます。複数ページのスキャンはこの連なりをページに使い、サムネイルは 2 つめのディレクトリに置かれるのが通例です。EXIF と位置情報は、ポインタのタグで最初のディレクトリからぶら下がる下位ディレクトリです。つまり下の一覧は複数ページの 1 ページめを見せているかもしれません。TIFF にタグを足した DNG も同じ形をしています。
TIFF は何をどこに置くか
- II / MM
- 最初の 2 バイトにあるバイト順。以降のすべてはこれを通して読む。
- IFD0
- 主ディレクトリ。画像のタグ、メーカー、機種、向き、解像度。
- IFD1
- 2 つめのディレクトリ。慣例としてサムネイルか次のページ。
- ExifIFD
- 露出、レンズ、撮影日時。ポインタのタグから届く下位ディレクトリ。
- GPSIFD
- 緯度、経度、高度。もう 1 つの下位ディレクトリ。
- StripOffsets
- 画素の位置。他と変わらない普通のタグ——そこが要点。
TIFF についての質問
ブラウザが画像を表示しないのに、なぜタグは読めるのですか?開く
タグを読むのはディレクトリとオフセットをたどる計算だからです。画像を表示するには、そのファイルが使っている圧縮の復号器が要ります。主要なブラウザに TIFF の復号器は入っていません。プレビューは表示できないと出ますが、タグの一覧は完全です。
DNG は TIFF と同じものですか?開く
構造としてはほぼ同じです。DNG は TIFF/EP の上に作られているので、同じヘッダ、同じディレクトリ、同じ 12 バイトのタグ項目を使い、センサーの生データ用のタグが加わっています。ここで学ぶ IFD の話はそのまま当てはまります。
TIFF が 40 ページあります。どれを見ているのですか?開く
1 ページめです。ディレクトリは連結リストで、この作業画面はヘッダが指しているもの、つまり 1 ページめを読みます。以降のページは独自のタグを持ちますが表示しません。
TIFF はどう整理されますか?開く
再エンコード整理で、JPEG を書き出します。TIFF のタグと画素の索引は同じ構造にあるため、ブラウザ内でタグだけ落としてファイルを TIFF のまま保つ方法はありませんし、そもそも TIFF を書けるブラウザもありません。
できること
- EXIF データを削除
- 写真をドロップして、埋め込みメタデータのないコピーをダウンロードします。JPEG は画素に触れずに EXIF セグメントが外れ、HEIC・PNG・WebP などは再エンコードされます。アップロードはありません。
- 位置情報を削除
- 写真が持っている座標を見てから、それのないコピーをダウンロードします。JPEG は位置情報タグだけを失い、他はすべて残ります。アップロードはありません。
- JPEG の EXIF を編集
- JPEG のタイトル、作成者、説明、著作権、ソフトウェア、撮影日時を変更して、編集済みのコピーをダウンロードします。端末内で動き、元のファイルは決して変更されません。
- XMP・IPTC・ICC ビューア
- ファイルが持つすべてのメタデータ群——EXIF、XMP、IPTC、ICC、メーカーノート——を区分ごとに読み、JSON で書き出せます。素材の検品、鑑識、処理の検証向け。アップロードはありません。
- 複数の写真を開く
- 最大 50 枚を開き、どれが位置情報を持っているかを確かめ、一式を表として書き出せます。アップロードは行わず、元のファイルに書き込むこともありません。