기존의 TweakPNG의 소스는 GITHUB에서 받게 되면은 ZLIB, PNG 도 추가 설정해야 한다.
Visual Studio 2019, ZLIB, PNG 최신 버전으로 설정 할때 컴파일 속성, 빌드 우선순위 등 같은 환경 설정이 불편하여 최신 버전으로 업데이트하여 GITHUB에 FORK 하였다.
https://github.com/cepiloth/tweakpng
Tools - Visual Studio 2019, zlib1.2.11 libpng16.37
PNG 는 작은 chunk 단위로 이루어진 이미지 포맷이며 이러한 단위를 분석해주는 툴로 TweakPNG라는 툴이 있다.
위 그림은 PNG 이미지를 TweakPNG 로 오픈했을 때의 해당 포맷을 분석한 결과이다.
TweakPNG 프로그램은 http://entropymine.com/jason/tweakpng/ 에서 개발되었으며 현재 https://github.com/jsummers/tweakpng에 소스가 업로드되어 있다.
아래는 PNG 포맷에 Chunk 데이터에 대한 기본 정보이다.
Portable Network Graphics의 약자로 GIF 이미지의 특허권으로 인하여 만들어진 포맷이다. PNG 포맷은 chunk 단위로 이루어진 이미지 포맷이다.
PNG 첫 8바이트 Signature 값에는 “89 50 4E 47 0D 0A 1A 0A”가 있음
헤더 시그니쳐 이후는 Chunk라는 단위로 배치된다.
중요한 Chunk에는 IHDR, PLTE, IDAT, IEND
보조 Chunk에는 tRNS, cHRM, qAMA, iCCP, sBIT, sRGB, iTXt, iEXt, zTXt, bKGD, hIST, pHYs, sPLT, tIME가 있다.
IHDR chunk : 이미지 헤더 정보
PLTE chunk : 팔레트 테이블 정보
IDAT chunk : 이미지 데이터 정보
IEND chunk : 이미지 Trailer 정보
해당 청크는 PNG 이미지를 사용하기 위한 최소한의 청크이며 반드시 존재해야 한다.
Critical chunks (shall appear in this order, except PLTE is optional) | |||
Chunk name | Multiple allowed | Ordering constaints | |
IHDR | No | Shall be first | |
PLTE | No | Befor first IDAT | |
IDAT | Yes | Multiple IDAT chunks shall be consecutive | |
IEND | No | Shall be last |
tRNS chunk : Transparency 정보
cHRM, qAMA, iCCP, sBIT, sRGB chunk : Colour space 정보
iTXt, tEXt, zTXt chunk : Textual 정보
bKGD, hIST, pHYs, sPLT chunk : 기타 정보
tIME chunk : Time 정보
Ancillary chunks (need not appear in this order) | |||
Chunk name | Multiple allowed | Ordering constraints | |
cHRM | No | Before PLTE and IDAT | |
gAMA | No | Before PLTE and IDAT | |
iCCP | No | Before PLTE and IDAT. If the iCCP chunk is present, the sRGB chunk should not be present. | |
sBIT | No | Before PLTE and IDAT | |
sRGB | No | Before PLTE and IDAT. If the sRGB chunk is present, the iCCP chunk should not be present. | |
bKGD | No | After PLTE; before IDAT | |
hIST | No | After PLTE; before IDAT | |
tRNS | No | After PLTE; before IDAT | |
pHYs | No | Before IDAT | |
sPLT | Yes | Before IDAT | |
tIME | No | None | |
iTXt | Yes | None | |
tEXt | Yes | None | |
zTXt | Yes | None |
LCMS2 #1 - 색상 프로파일(Color Profile) (0) | 2020.01.06 |
---|---|
LockBits 를 사용 하는 이유 (0) | 2019.12.26 |
C++ ImageFilterC For Visual Studio 2017 (0) | 2019.12.17 |
glTF - Accessors (0) | 2018.11.20 |
glTF - Buffers, BufferViews (0) | 2018.11.20 |
댓글 영역