File Signature
→ 89 50 4E 47 0D 0A 1A 0A
50 4E 47 → ASCII → PNG
Chunk
IHDR (Image Header) : PNG 이미지의 크기, 필터링 방식, 압축 방식 등
{
Length : 00 00 00 0D (13 byte),
Chunk Type : IHDR,
Chunk Data ( 13 byte ),
{
Width(4 byte),
Height (4 byte),
Bit depth (1 byte),
Color Type (1 byte),
Compression method (1 byte),
Filter method (1 byte),
Interlace method (1 byte),
}
CRC
}
∙ Width & Length : 이미지의 폭과 높이를 지정, 특정 값으로 조작 가능
∙ Bit Depth : 하나의 채널이 몇비트로 구성될 지를 결정
∙ Color Type : 이미지의 색상을 어떻게 구성할 것인지를 결정, RGB Color Type 이라면 (R, G, B) 세 개의 채널을 소유
∙ Compression method : 압축 방식, 0:DEFLATE 단일 방식
∙ Filter method : 단일 방식 - 0
∙ Interlace method : 이미지 로딩 전 낮은 해상도를 먼저 보여주기 위하여 사용, 0(No interlace), 1 (Adam7 interlace) 두 가지 방식
IDAT (Image Data) : 이미지 데이터가 들어가는 부분, 모든 이미지 데이터가 압축되어 하나의, 혹은 다수의 IDAT Chunk 에 들어가기 때문에, 이미지 디코딩을 위해서는 모든 IDAT Chunk 가 필요
IEND (Image End) : 이미지 끝에 들어가는 Chunk로, PNG 파일의 끝을 표현, 데이터를 담고 있지 않으므로 Length = 0
{
Length : 00 00 00 00 (0 byte),
Chunk Type : IEND,
Chunk Data (0 byte),
CRC
}
출처
- ryanking13.github.io/2018/03/24/png-structure.html