가이드

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 Huffman 테이블
FF C0 SOF0 프레임 헤더: 치수, 구성요소
FF DA SOS 스캔 시작, EOI까지 압축 데이터
FF D9 EOI 이미지 끝

각 세그먼트는 최대 64KB를 보유합니다. 큰 페이로드는 동일한 유형의 여러 세그먼트로 분할됩니다: 큰 XMP는 "확장 XMP"를 사용하며, 큰 C2PA 매니페스트는 여러 APP11 세그먼트로 분할되고 시퀀스 번호로 재조립됩니다. AuditImage 테이블의 두 연속 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가 각각 하나의 청크입니다. 확장 메타데이터에는 VP8X 헤더가 필요합니다.

AuditImage의 "파일 구조" 테이블 읽기

  • 세그먼트: 타입 이름. 메타데이터를 담고 있는 세그먼트는 강조 색상으로 굵게 표시됩니다.
  • 오프셋: 파일의 바이트 위치, 16진수.
  • 크기: 마커와 길이 바이트를 포함한 전체 세그먼트.
  • 비율: 전체 파일에 대한 상대적 바.

유용하게 살펴볼 점: 메타데이터 세그먼트는 보통 이미지 데이터 앞에 옵니다; 동일한 유형의 반복된 세그먼트는 주목할 가치가 있습니다; 수십 KB 이미지에 200KB APP11이 있으면 매니페스트가 썸네일을 삽입했음을 의미합니다; 내용이 있는 COM 세그먼트는 펼쳐볼 가치가 있습니다.

수동 확인

exiftool -v3 photo.jpg           # 세그먼트별로
exiftool -htmlDump photo.jpg > dump.html