티스토리 뷰

이번 포스트에서는 다양한 청크에 대해 알아보자.


청크의 종류는 중요 청크랑 보조 청크로 나누어진다.중요 청크는 맨 앞글자가 대문자이며, 보조 청크는 맨 앞글자가 소문자이기 때문에 쉽게 구분할 수 있다. 중요 청크에는 IHDR, IDAT, PLET, IEND 청크들이 있으며, 모든 PNG 파일에는 IHDR 청크와 IDAT 청크 IEND 청크가 들어있다. 


<사진1> 청크의 이름의 맨 앞글자로 청크의 종류를 구분할 수 있다.



 IHDR 청크는 "Image Header"의 약자로 PNG 파일의 기본 정보를 담고있는 청크이며, 시그니처 바로 뒤에 붙는다.  IHDR 청크에는  가로, 세로, 비트 깊이, 색 타입, 압축 메소드, 필터링 메소드, 인터레이스 메소드에 대한 정보가 담겨있다. 


WidthHeight는 이름에서 알 수 있듯이 이미지의 가로(폭)와 세로(높이)이다. 길이는 각각 4 bytes씩을 차지한다. 궁금하면 010에디터로 한번 열어보자.

Bit Depth를 직역하면 비트 깊이인데 한 픽셀이 차지하는 비트의 양을 의미한다. 그리고 Color Type (색깔유형)은 색의 유형을 숫자로 나타낸 값이다. 아래 표와 사진이 이해를 도와줄 것이다.


 PNG image type

 Color Type

 Allowed bit depths

 interpretation

 Grayscale

0

  1, 2, 4, 8, 16 

 Grayscale Data

 Truecolor

2

  8, 16 

  RGB Data

 Indexed-color

3

  1, 2, 4, 8 

  Palette Data

 Grayscale with alpha 

4

  8, 16

 Grayscale + Alpha Data

 Truecolor with alpha 

6

  8, 16 

  RGB + Alpha Data

<표 1> 색 유형에 따른 비트 깊이


한글로 잘 설명해 보자면, Color Type에 들어가는 숫자는 이미지의 색 유형을 표시한다. 0번은 회색조, 2번은 RGB,  3번은 색인 색상 (뒤에서 추가 설명), 4번은 투명도가 있는 회색조 (알파가 투명도) 6번은 투명도가 있는 RGB를 

의미한다. 표에 주어지지 않은 상황의 이미지 데이터는 만들 수 없다. 예를 들면 Bit Depth가 4인 truecolor같은 경우는 만들 수 없다. Bit Depth와 Color Type은 각각 1byte로 표현된다.


다음은 Compression method (압축 메소드), Filter method (필터 메소드), Interlace method (인터레이스 메소드) 가 나온다. 이들도 이름 그대로 압축, 필터, 인터레이스 하는 메소드의 종류를 숫자로 나타낸 값으로, 1byte씩을 차지한다. 압축 메소드는 현재까지0 (Deflate) 한 가지이고, 필터링 메소드도 (Adaptive Filtering) 한 가지이다. 인터레이스 메소드는 0 (No interlace), 1 (Adam7 interlace) 두 가지다. 인터레이스를 간단히 설명해주자면, 인터레이스 매소드는 웹 페이지 등에 이미지를 표시할 때 이미지 로딩이 완료되기 전 먼저 해상도가 낮은 이미지를 보여주기 위하여 사용된다.

<사진2> IHDR 청크 : 010 에디터



IDAT 청크는 "Image Data"의 약자로 실질적 이미지 데이터가 들어가는 부분이다. 한 개의 PNG 파일은 여러개의 IDAT 청크를 가질 수 있는데, 이는 데이터를 스트리밍 방식으로 전송하기 위한 것이다. 하나의 IDAT 청크가 이미지의 특정 부분을 나타내는 것은 아니기 때문에 모든 IDAT 청크가 있어야만 이미지 디코딩을 정상적으로 할 수 있다. IDAT 청크의 데이터는 원본 데이터가 필터링 메소드와 압축 메소드를 거친 후에 나온 것이다. 그래서 반대로 압축을 풀고 필터링을 해제하면 원본 데이터를 얻을 수 있다. (와!)


<사진3> IDAT 청크 : 010 에디터


PLET (Palette) 청크는 팔레트, 즉 색 공간을 표시하는 청크이다. 그래서 IDAT 청크에서 PLET 청크의 색상 번호로 색을 표현하는 것이다. Color Type 3에서는 색을 표시하기 위해 항상 PLTE 청크가 필요하고, color type 2또는 6에서는 선택적으로 필요하다PLTE 청크는 bit depth에 관계없이 한 샘플(색상 채널 ex. R, G, B, A) 8 비트를 사용한다. 팔레트 항목 수는 bit depth로 표현할 수 있는 범위를 초과하지 않는다.


IEND 청크는 이미지의 맨 뒤에 위치하는 청크로, 이미지 파일의 끝을 표시하는 청크이다. 아무 데이터가 없기 때문에 길이가 0이다



혹시 좀 더 알아보고 싶다면 아래를 링크로 들어가보자. (영어를 잘한다면 ㅎㅎ)

사이트 : https://www.w3.org/TR/PNG-Introduction.html


그리고 아래 블로그도 많이 참고했다.

블로그 : https://ryanking13.github.io/2018/03/24/png-structure.html

'Reversing > PNG 파일 구조' 카테고리의 다른 글

[PNG] PNG 파일 구조의 이해 - 1  (1) 2018.08.04
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 트위터 공유하기
  • 트위터 공유하기
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함