PNG

위키百科, 우리 모두의 百科事典.

포터블 네트워크 그래픽스

8비트 透明 채널을 使用한 PNG 그림을 格子 무늬 背景에 오버레이했을 때의 모습. 透明度를 標示하기 위해 그래픽스 소프트웨어 에 普通 使用된다.
파일 擴張字 .png
인터넷 미디어 타입
image/png
타입 코드 PNGf
PNG
UTI public.png
매직 넘버 89 50 4e 47 0d 0a 1a 0a
開發 PNG Development Group ( W3C 에 寄附)
發表日 1996年 10月 1日 (27年 前) ( 1996-10-01 )
포맷 種類 非損失 비트맵 이미지 포맷
다음으로 확장 APNG , JNG , MNG
標準 ISO / IEC 15948 , [1] IETF RFC 2083
오픈 포맷 ?

포터블 네트워크 그래픽스 (Portable Network Graphics; PNG, / p ? ŋ / [2] [3] )는 非損失 그래픽 파일 포맷 의 하나이다. 特許 問題가 얽힌 GIF 포맷의 問題를 解決하고 改善하기 위해서 考案되었다. PNG는 公式的으로는 "핑"( /p?ŋ/ )이라고 읽지만, 大部分은 "피엔지"라고 英語 綴字 그대로 읽는다.

PNG 포맷은 컬러 팔레트 火傷과 그레이스케일 畫像, 그리고 풀 컬러 畫像 方式을 모두 支援한다. 그러나 인터넷 商議 이미지 表示를 念頭에 두고 開發되었기 때문에 CMYK 等의 色 空間 은 支援하지 않는다.

파일 擴張字는 PNG 또는 png 를 쓰며, MIME 타입은 image/png 으로 적는다.

歷史 [ 編輯 ]

PNG 포맷을 만들게 된 背景은 1995年 , 유니시스 社가 GIF 에 使用되는 LZW 데이터 壓縮 알고리즘에 對해 소프트웨어 特許 를 適用할 것이라고 公告하면서이다. 이 알고리즘은 美國 特許 4,558,302番으로 登錄되어 있고, 다른 여러 나라에도 登錄되어 있다. 또한 256 色만을 貯藏할 수 있는 GIF는 限界가 있으므로 컴퓨터 性能이 좋아지면서 問題가 되어 왔다. 1999年 8月, 유니시스가 自由 소프트웨어 (프리웨어)와 非商業 소프트웨어(Non-Commercial License Software, FMOD)에 對한 無料 特許 政策을 거둬들이면서 PNG는 人氣를 끌기 始作했다.

技術 槪要 [ 編輯 ]

파일 헤더 [ 編輯 ]

PNG 파일은 8바이트의 信號로 始作한다. [4]

意味
89 通信 等에서 8비트 데이터를 支援하지 않는 시스템을 찾거나 텍스트 파일과의 區分을 위해 使用된다.
50 4E 47 ASCII PNG 라는 글字로, 텍스트 에디터 等에서 쉽게 區分하기 위해 쓰인다.
0D 0A DOS -style의 줄바꿈(CRLF)으로, DOS-Unix 變換에서 데이터 줄바꿈을 위해 쓰인다.
1A DOS에서 TYPE 命令이 쓰였을 때 出力을 멈추기 위해 使用된다. end-of-file 文字.
0A Unix-style 줄바꿈으로, (LF) Unix-DOS 變換에서 줄바꿈에 使用한다.

파일의 청크 [ 編輯 ]

헤더 뒤에는 이미지에 對한 情報를 담고 있는 一連의 청크(chunk)가 온다. 청크는 그 自身을 重要 또는 補助 로 宣言한다. 프로그램이 받아들이지 못하는 補助 청크는 그냥 無視된다. 이런 式으로 청크를 통한 階層 構造는 디지털 컨테이너 포맷 과 같은 槪念으로, PNG 포맷이 舊버전과 互換되면서 쉽게 擴張할 수 있도록 해준다. 이와 같은 構造가 MNG, JNG, APNG 포맷에도 使用된다. 청크는 네 가지 部分으로 構成된다. 길이(4바이트), 청크 타입(또는 이름)(4바이트), 청크 데이터(길이 바이트), 그리고 循環 重複 檢事 (循環 重複檢査/체크섬, 4바이트). CRC는 길이를 除外한 청크 타입과 데이터로 生成된 network-byte-order CRC-32이다.

길이 청크 타입 청크 데이터 CRC
4 바이트 4 바이트 길이 bytes 4 바이트

청크 타입은 ASCII 文字 네個로 構成된다. 大小文字는 區分된다. 이들의 大小文字 與否가 디코더 에게 청크를 認識해야 할지에 對한 情報를 준다. 첫番째 文字는 이 청크가 重要 認知 補助 인지 알려준다. 大文字일 境遇 重要 이고, 그렇지 않을 境遇 補助 이다. 重要 청크는 파일을 읽는데 必須的인 情報를 갖고 있다. 디코더가 解釋할 수 없는 重要 청크를 받으면 파일 읽기를 中斷하고 使用者에게 警告를 傳達해야 한다. 두番째 文字는 청크가 "퍼블릭"(PNG파일 標準에 包含되어 있거나 特殊目的 퍼블릭 청크의 레지스트리에 包含되어 있음)인지 "프라이빗"(標準이 아님)인지 判別한다. 大文字는 퍼블릭이고 小文字는 프라이빗이다. 이는 프라이빗과 퍼블릭 청크의 이름이 衝突하는 것을 막아준다.(단, 같은 이름의 프라이빗 청크는 衝突할 수 있다) 세番째 文字는 PNG 標準에 따라 大文字여야 한다. 未來의 擴張을 위해 남겨둔 文字로, 디코더는 이 文字가 小文字일 境遇 解釋 못하는 것으로 處理해야 한다. 네番째 文字는 청크를 解釋하지 못할 境遇 輻射가 安全한지 判別한다. 小文字일 境遇 파일에 變更이 있어도 安全하게 複寫될 수 있다. 大文字일 境遇, 파일 變更이 重要 청크를 變更하지 않았을 境遇에만 複寫될 수 있다.

重要 청크 [ 編輯 ]

디코더는 PNG 파일을 읽고 렌더링하기 위해서 重要 청크를 解釋할 수 있어야 한다.

  • IHDR 는 첫番째 청크로 와야 한다. 이것은 順序대로 이미지의 너비, 높이, 비트 數와 컬러 타입을 標示한다. [5]
  • PLTE 팔레트 (컴퓨팅) , 卽 色空間을 標示한다.
  • IDAT 는 여러 個의 IDAT 청크로 쪼개질 수 있는 이미지를 標示한다. 파일 사이즈가 若干 커지긴 하지만 PNG를 스트리밍 方式으로 傳達할 수 있게 만든다. IDAT는 壓縮 알고리즘의 出力 스트림을 통한 實際 이미지 파일을 갖고 있다. [6]
  • IEND 는 이미지의 끝을 標示한다.

PLTE 는 컬러 타입 3(인덱스드 컬러, 設定된 色만을 表示한다)에는 必須的이다. 컬러 타입 2와 6(트루 컬러와 트루컬러 + 알파 채널)에는 選擇事項이다 그리고 컬러 타입 0와 4(그레이스케일과 그레이스케일 + 알파 채널)에는 나타내서는 안된다.

GIF와의 比較 [ 編輯 ]

  • 大部分의 境遇 PNG는 GIF 보다 壓縮率이 더 높다.
  • GIF의 單色 투명층과 달리 PNG는 8비트 알파 채널을 利用한 다양한 투명층을 支援한다.
  • 256色까지 支援하는 GIF와 달리 PNG는 트루 컬러 를 支援한다.
  • GIF에서는 提供되는 애니메이션을 PNG는 支援하지 않는다. (代案으로 PNG에 基盤한 APNG , JNG , MNG 와 같은 파일 形式이 提案되었다.)

파일 크기 [ 編輯 ]

PNG가 GIF보다 最新의 壓縮 알고리즘을 使用하지만, GIF보다 더 큰 파일을 만든다고 알고 있는 사람이 있다. 여기에는 몇 가지 까닭이 있는데,

  • GIF는 256色만을 支援한다. 트루 컬러 그림을 PNG로 壓縮할 때는 原本의 色을 다 貯藏하는 反面, GIF로 貯藏할 때는 256 色으로 數를 줄인 다음에 貯藏한다. 萬若 原本도 256色만을 使用한다면 이런 差異는 나오지 않는다.
  • PNG 파일 形式에는 메타데이터 가 追加로 붙어 있는 境遇가 있다. (어도비 社의 파이어웍스 等).
  • 어도비 포토샵의 一部 옛 버전에서는 PNG 壓縮 알고리즘을 잘 具現해 내지 못해서 큰 파일을 만들곤 했다.

PNG 파일의 크기를 줄이는 OptiPNG pngcrush 와 같은 오픈 소스 MS-DOS 에서 유닉스 리눅스 等의 다양한 環境을 支援하여 提供하고 있다.

JPEG와의 比較 [ 編輯 ]

왼쪽의 JPEG 파일에 비해 오른쪽의 PNG 파일이 훨씬 더 깔끔하다.

寫眞과 같은 이미지에 對해서는, JPEG 가 寫眞에 特化된 損失 壓縮 알고리즘을 使用하므로 PNG에 비해 더 작은 파일을 만들 수 있다. 境遇에 따라 5-10倍 差異를 보이기도 한다. [ 出處 必要 ] 하지만 JPEG 壓縮은 量子化의 影響으로, 바라지 않던 雜티가 낄 수 있다. 文字나 날카로운 境界가 있는 그림은, JPEG에서 생기기 쉬운 뭉개짐 없이 JPEG보다 壓縮을 더 잘 할 수 있는 PNG를 쓰는 것이 더 낫다.

또한, PNG는 非損失 壓縮이므로, 나중에 高畫質의 再編輯을 해야 한다면 PNG로 貯藏해 놓는 것이 낫다. JPEG를 使用할 때는 貯藏을 하면 할수록 繼續 損失이 累積될 수 있다.

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. “ISO/IEC 15948:2004 ? Information technology ? Computer graphics and image processing ? Portable Network Graphics (PNG): Functional specification” . 2011年 2月 19日에 確認함 .  
  2. “History of PNG” . Libpng.org. 2010年 5月 29日 . 2010年 10月 20日에 確認함 .  
  3. “IEC standard (scope)” . 2003年 11月 10日.  
  4. “PNG (Portable Network Graphics) Specification, Version 1.1?12. Appendix: Rationale” . Libpng.org . 2010年 10月 20日에 確認함 .  
  5. Glenn Randers-Pehrson & Thomas Boutell (editors) (1999). “Chunk Specifications” . 《PNG (Portable Network Graphics) Specification, Version 1.2》. Massachusetts Institute of Technology (MIT) . 2011年 1月 30日에 確認함 .  
  6. “Portable Network Graphics (PNG) Specification (Second Edition)” . W3.org . 2013年 5月 1日에 確認함 .  

外部 링크 [ 編輯 ]