ガイド

JPEGセグメントとPNGチャンク:ファイル内のメタデータの配置場所

AuditImageの「ファイル構造」テーブルの各行の読み方。APP1、APP11、COM、tEXt、caBXに含まれるもの、およびオフセットとサイズが示すもの。

JPEG:マーカーセグメント

JPEGはFF xxで始まる一連のセグメントです。画像データより前はすべてメタデータまたはデコードパラメータです:

マーカー 名前 内容
FF D8 SOI 画像の開始
FF E0 APP0 JFIFヘッダー、解像度ユニット、サムネイル
FF E1 APP1 EXIF(Exif\0\0で始まる)またはXMP(http://ns.adobe.com/xap/1.0/で始まる)
FF E2 APP2 ICCプロファイル、MPFマルチピクチャ(スマートフォンの深度写真)
FF EB APP11 C2PAマニフェスト(JPで始まり、jumbボックスを保持)
FF ED APP13 Photoshop IRB、IPTCを含む
FF EE APP14 Adobeカラートランスフォームフラグ
FF FE COM コメント、任意のテキスト
FF DB DQT 量子化テーブル
FF C4 DHT ハフマンテーブル
FF C0 SOF0 フレームヘッダー:寸法、コンポーネント
FF DA SOS スキャンの開始、EOIまでの圧縮データが続く
FF D9 EOI 画像の終了

各セグメントは最大64KBを保持します。より大きなペイロードは同じ種類の複数のセグメントに分割されます:大きなXMPは「拡張XMP」を使用し、大きなC2PAマニフェストは複数のAPP11セグメントに分割されシーケンス番号で再アセンブルされます。AuditImageのテーブルで2つの連続するAPP11 C2PA行はまさにこれです。

PNG:チャンク

PNGは8バイトの署名で始まり、長さ、タイプ、データ、CRCを持つ一連のチャンクが続きます:

タイプ 内容
IHDR 寸法、ビット深度、カラータイプ
iCCP ICCプロファイル
pHYs 物理的解像度
eXIf EXIF(2017年に標準に追加)
tEXt / iTXt / zTXt キー/値テキスト:XMP、SDパラメータ、AIGC暗黙ラベルがここに配置
caBX C2PAマニフェスト
IDAT 画像データ。複数のチャンクの場合もあり
IEND 終了

PNGのXMPはXML:com.adobe.xmpをキーワードとするiTXtです。Stable DiffusionパラメータはparametersをキーワードとするtEXtです。

WebP:RIFFチャンク

WebPはRIFFコンテナです:VP8 、VP8L、VP8Xが画像を保持し、EXIF、XMP 、ICCP、C2PAがそれぞれ1つのチャンクです。拡張メタデータにはVP8Xヘッダーが必要です。

AuditImageの「ファイル構造」テーブルの読み方

  • セグメント:タイプ名。メタデータを含むセグメントはアクセントカラーで太字表示。
  • オフセット:ファイル内のバイト位置(16進数)。
  • サイズ:マーカーと長さバイトを含むセグメント全体。
  • シェア:ファイル全体に対する相対的なバー。

役立つ観察事項:メタデータセグメントは通常画像データの前に配置。同じ種類の繰り返しセグメントは確認の価値あり。数10KBの画像が200KBのAPP11を保持している場合、マニフェストにサムネイルが埋め込まれている。内容のあるCOMセグメントは展開する価値あり。

手動確認

exiftool -v3 photo.jpg           # セグメントごと
exiftool -htmlDump photo.jpg > dump.html