== íŒŒì¼ êµ¬ì¡° == PNG 파ì¼ì€ PNG 시그너처와 ì—¬ëŸ¬ê°œì˜ chunkë¡œ ì´ë£¨ì–´ì§. === 1. PNG file 시그너처 === * PNG파ì¼ì˜ ì²˜ìŒ 8ë°”ì´íŠ¸ëŠ” 다ìŒì˜ ì‹ì§„ 값들로 시작. {{{ 137 80 78 71 13 10 26 10 }}} === 2. Chunk Layout === * ê° chunk는 네 부분으로 나뉘어진다. * Length : 4ë°”ì´íŠ¸. Length, Chunk Type, CRC 길ì´ëŠ” í¬í•¨ë˜ì§€ ì•Šì€ ê°’ì´ë‹¤. * Chunk Type : 4ë°”ì´íŠ¸. 반드시 알파벳ì´ì–´ì•¼ 함(편리함. ê°€ë…ì„±ì„ ìœ„í•´). 엔코ë”, 디코ë”는 ì´ ê°’ì„ ì´ì§„ 값으로 ì¸ì§€. * Chunk Data : Type ì— ë”°ë¥¸ ë°ì´í„°. 길ì´ê°€ 0ì¼ìˆ˜ 있ìŒ. * CRC : Chunk Type + Chunk Data ì— ëŒ€í•œ 4 ë°”ì´íŠ¸ CRC ê°’. === 3. Chunk ì´ë¦„짓기 규칙 === === 4. CRC ì•Œê³ ë¦¬ì¦˜ === === 5. Chunk Spec. === * ì œì¼ ì²˜ìŒì—는 IHDR chunkê°€ 오는ë°, 다ìŒì˜ 요소로 ì´ë£¨ì–´ì ¸ 있다. * Width : í”½ì…€ë‹¨ìœ„ì˜ ì´ë¯¸ì§€ 너비 * Height : í”½ì…€ë‹¨ìœ„ì˜ ì´ë¯¸ì§€ ë†’ì´ * Bit depth : í•˜ë‚˜ì˜ ìƒ˜í”Œ(픽셀과는 다른개ë…)당 ë˜ëŠ” íŒŒë ˆíŠ¸ ì¸ë±ìŠ¤ë‹¹ ì“°ì´ëŠ” ë¹„íŠ¸ì˜ ìˆ˜ * Compression method : ì´ë¯¸ì§€ ë°ì´í„°ë¥¼ ì••ì¶•í•˜ëŠ”ë° ì“°ëŠ” 방법 * Filter method : ì´ë¯¸ì§€ ë°ì´í„°ì— 대한 ì „ì²˜ë¦¬ 방법. Compressionê³¼ ê´€ë ¨. * Interlace method : ì´ë¯¸ì§€ì— 대한 비트오ë”. || Color Type || Allowed Bit Depths || Interpretation || || 0 || 1,2,4,8,16 || Each pixel is a grayscale sample. || || 2 || 8, 16 || Each pixel is an R, G, B triple. || || 3 || 1, 2, 4, 8 || Each pixel is a palette index; a PLTE chunk must appear. || || 4 || 8, 16 || Each pixel is a grayscle sample, followed by an alpha sample. || || 6 || 8, 16 || Each pixel is an R, G, B triple, followed by an alpha sample. || * PLTE chunk : 256ê°œì˜ ì—”íŠ¸ë¦¬ë¥¼ ê°–ìŒ. R, G, B 색ìƒ) * IDAT chunk : ì‹¤ì œ 픽셀값. IDAT는 여러개가 올 수 있다. (see also [PNGFileFormat/ImageData]) * IEND chunk : 반드시 ì´ chunk ë¡œ ë나야 함. Data 길ì´ëŠ” 0. === Summary === || Name || 여러개 허용? || 파ì¼ìƒì˜ 위치 ì œì•½ || || IHDR || x || 반드시 ì œì¼ ì•žì— ì™€ì•¼í•¨ (처ìŒì˜ 8비트 ì œì™¸) || || PLTE || x || IDATì „ì— ì™€ì•¼í•¨ || || IDAT || o || 여러개가 사용ëœë‹¤ë©´ 반드시 ì—°ì†ì ì´ì–´ì•¼ 함 || || IEND || x || 반드시 ì œì¼ ëì— ì™€ì•¼ 함 || ---- [PNGFileFormat]