PNG
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
PNG는 GIF의 단점을 보완하고, 더 높은 색상 표현과 투명도를 지원하기 위해 개발된 무손실 압축 방식의 그래픽 파일 형식이다. 1995년 유니시스가 GIF에 사용되는 LZW 압축 알고리즘에 대한 특허를 적용하겠다고 발표하면서 개발이 시작되었으며, 파일 구조는 8바이트 시그니처, 이미지 정보를 담은 청크들로 구성된다. PNG는 2단계 압축 과정을 사용하며, 픽셀은 팔레트의 샘플 데이터 인덱스이거나 샘플 데이터 자체일 수 있다. 다양한 투명도 옵션을 제공하며, GIF, JPEG, WebP, AVIF 등 다른 이미지 형식과 비교된다. 주요 소프트웨어에서 널리 지원되며, 웹 브라우저에서도 널리 지원된다. 파일 크기를 최적화하기 위한 다양한 도구가 존재한다.
더 읽어볼만한 페이지
- 화상 압축 - JPEG
JPEG은 정지 화상의 디지털 압축 및 코딩을 위한 국제 표준이자 이를 만든 위원회의 이름으로, 1992년 최초 표준 발표 이후 웹 환경에서 널리 사용되는 이미지 형식이 되었다. - 화상 압축 - 웨이블릿 변환
웨이블릿 변환은 국부적인 작은 파인 웨이블릿을 패턴으로 신호, 시스템, 프로세스의 모델을 구성하는 방법으로, 푸리에 해석의 한계를 극복하고 시간-주파수 해석을 가능하게 하여 신호 분석, 노이즈 제거, 신호 압축 등에 활용된다. - 그래픽 파일 포맷 - JPEG
JPEG은 정지 화상의 디지털 압축 및 코딩을 위한 국제 표준이자 이를 만든 위원회의 이름으로, 1992년 최초 표준 발표 이후 웹 환경에서 널리 사용되는 이미지 형식이 되었다. - 그래픽 파일 포맷 - BMP 파일 포맷
BMP 파일 포맷은 마이크로소프트에서 정의한 다양한 색상 깊이를 가진 컬러 비트맵 표현 방식으로, 장치 독립 비트맵이라고도 불리며, BMP 헤더, 비트맵 정보, 색 팔레트, 비트맵 데이터 등으로 구성되어 높은 호환성을 가지지만 압축을 거의 하지 않아 파일 크기가 큰 편이다. - W3C 표준 - HTML
HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다. - W3C 표준 - 타임드 텍스트
타임드 텍스트는 영상이나 오디오 콘텐츠에 시간 정보를 담아 표현되는 텍스트로, 자막이나 캡션 등에 활용되며 TTML, WebVTT 등의 표준이 존재한다.
PNG - [IT 관련 정보]에 관한 문서 | |
---|---|
파일 포맷 정보 | |
![]() | |
파일 확장자 | .png |
MIME 형식 | image/png |
타입 코드 | PNGf, PNG (후행 공백 포함) |
유니폼 타입 | public.png |
준수 대상 | public.image |
장르 | 비손실 압축비트맵이미지 포맷 |
소유자 | PNG 개발 그룹 (W3C에 기증) |
출시일 | 1996년 10월 1일 |
확장 대상 | APNG JNG MNG |
표준 | ISO/IEC 15948 IETF RFC 2083 |
개방 여부 | 예 |
매직 넘버 | 89 50 4e 47 0d 0a 1a 0a (16진수 8바이트) |
URL | 사양 홈페이지 |
명칭 | |
영어 명칭 | Portable Network Graphics |
발음 (IPA) | /ˈpɪŋ/ |
발음 (음성 표기) | PING |
발음 (IPA) | /ˌpiːɛnˈdʒiː/ |
발음 (음성 표기) | PEE en JEE |
한국어 명칭 | 포터블 네트워크 그래픽스 |
약칭 | PNG, 핑 |
개요 | |
설명 | 손실 없는 압축 이미지 파일 포맷의 한 종류이다. |
관련 문서 | |
관련 문서 | PNG (동음이의) |
참고 자료 | |
참고 자료 | History of PNG Registration of new Media Type image/png 1 Scope Portable Network Graphic .PNG File Description Web Review: PNG's NOT GIF! |
2. 역사
1995년 유니시스사가 GIF에 쓰이는 LZW 데이터 압축 알고리즘에 대해 소프트웨어 특허를 적용한다고 발표하면서 PNG 포맷 개발이 시작되었다. 당시 GIF는 256색만 표현할 수 있었는데, 컴퓨터 성능이 좋아지면서 더 많은 색을 표현할 수 있는 기술이 필요해졌다. 1999년 8월, 유니시스가 자유 소프트웨어(프리웨어)와 비상업용 소프트웨어에도 특허 사용료를 받겠다고 발표하면서 PNG는 더 많은 관심을 받게 되었다.
PNG 개발은 1994년 12월 28일, GIF에 사용된 렘펠-지브-웰치 (LZW) 데이터 압축 알고리즘이 유니시스에 의해 특허를 받았다는 것을 알게 되면서 시작되었다. Usenet 사용자들은 유니시스의 특허 정책에 비난했고, 토마스 부텔은 1995년 1월 4일 Usenet 뉴스그룹 "comp.graphics"에 GIF의 무료 대안을 위한 계획을 세우는 사전 토론 스레드를 게시했다.
올리버 프롬은 PING이라는 이름을 제안했고, 결국 ''PING is not GIF''(PING는 GIF가 아님)을 의미하는 재귀 약어인 PNG가 되었으며, .png 파일 확장자가 되었다.
PNG의 전체 사양은 1996년 10월 1일 월드 와이드 웹 컨소시엄 (W3C)의 승인을 받아 공개되었으며, 나중에 1997년 1월 15일 요청 시 의견 (RFC) 2083으로 발표되었다.
PNG는 처음에 단일 이미지 형식으로 결정되었다. 2001년에 PNG 개발자들은 애니메이션을 지원하는 다중 이미지 네트워크 그래픽스 (MNG) 형식을 발표했지만, 웹 브라우저에서 제대로 지원되지 않았다. 2008년에는 모질라 개발자들이 애니메이션 휴대용 네트워크 그래픽스 (APNG) 형식을 발표했는데, 이는 주요 웹 브라우저에서 지원되고 있다.
PNG 원본 규격은 임시로 구성된 컴퓨터 그래픽스 전문가와 열성적인 사람들에 의해 작성되었으며, 형식에 대한 논의와 결정은 이메일을 통해 이루어졌다. RFC 2083에 나열된 원저자는 다음과 같다.
편집자 | 기여 편집자 | 저자 |
---|---|---|
토마스 부텔 | 톰 레인 | 마크 아들러, 토마스 부텔, 크리스찬 브룬셴, 아담 M. 코스텔로, 리 다니엘 크로커, 안드레아스 딜거, 올리버 프롬메, 장-루 가일리, 크리스 허보스, 알렉스 야쿨린, 닐 케틀러, 톰 레인, 알렉산더 레만, 크리스 릴리, 데이브 마틴데일, 오웬 모르텐센, 키스 S. 피켄스, 로버트 P. 풀, 글렌 란더스-페르손, 그렉 뢸로프스, 빌렘 반 스카이크, 가이 샬나트, 폴 슈미트, 팀 웨그너, 제러미 월 |
2. 1. 개발 배경
1994년 말, 유니시스사가 GIF에 사용되는 LZW 압축 알고리즘에 대한 특허권을 행사하면서 PNG 개발이 시작되었다.[83] 1995년 유니시스는 GIF에 사용되는 LZW 데이터 압축 알고리즘에 대해 소프트웨어 특허를 적용할 것이라고 공고하였다. 이 알고리즘은 미국 특허 4,558,302번으로 등록되어 있었고, 다른 여러 나라에도 등록되어 있었다. 또한 256색만을 저장할 수 있는 GIF의 한계와 컴퓨터 성능 향상으로 인해, 더 높은 24비트 색상 심도를 지원해야 할 필요성도 PNG 개발의 동기가 되었다.1999년 유니시스가 비상업용 소프트웨어에 대해서도 특허 사용료를 청구하면서 PNG가 더욱 주목받았다.[83] 실제로 PNG의 머리글자는 비공식적으로 "'''P'''NG is '''n'''ot '''g'''if영어" (PNG는 GIF가 아님)라는 순환 약자의 의미를 담고 있다.[81][82]
2. 2. 버전별 역사
- 1996년 10월 1일 - PNG 버전 1.0 사양이 릴리스되었고, 같은 날 W3C에서 권고하였다.[81]
- 1998년 12월 31일 - 버전 1.1이 릴리스되었다.[81] 소규모 변경과 세 종류의 새로운 청크가 추가되었다.
- 1999년 8월 11일 - 버전 1.2가 릴리스되었다.[81] 한 종류의 청크가 추가되었다.
- 2003년 11월 10일 - 국제 표준(ISO/IEC 15948:2003)이 발표되었다.[81] 이 버전은 1.2와 약간의 차이가 있으며, 신규 추가 청크는 없다.
- 2004년 3월 3일 - 국제 표준화 (ISO/IEC 15948:2004) 되었다.[85]
2. 3. 한국에서의 PNG 표준 제정
1999년 유니시스가 비상업용 소프트웨어에 대해서도 특허 사용료를 청구하기로 결정하면서 PNG는 더욱 주목받게 되었다.[83] 2002년 8월 20일, 일본에서 일본공업규격 JIS X4242 '컴퓨터 그래픽스 및 화상 처리 - 네트워크용 화상 형식 (PNG)'가 제정되었다.[84]3. 기술 개요
PNG는 이미지의 색상 모델(Color model)로서 최대 16비트의 그레이스케일, 24비트 및 48비트의 RGB, 또는 8비트까지의 인덱스 색상 모드(팔레트 색상)를 사용할 수 있다. 투명도는 크로마키를 통한 투명도 지정 및 8비트에서 16비트의 알파 채널을 지원한다. 또한 이미지에 부속되는 텍스트 등의 메타데이터나 감마 값 등도 이미지마다 기록할 수 있다.
PNG 이미지의 픽셀은 팔레트의 샘플 데이터 인덱스이거나 샘플 데이터 자체일 수 있다. 팔레트는 별도의 테이블(PLTE 청크)에 포함된다. 단일 픽셀에 대한 샘플 데이터는 1개에서 4개 사이의 숫자로 구성된 튜플로 구성된다. 픽셀 데이터가 팔레트 인덱스를 나타내는지, 명시적 샘플 값을 나타내는지에 관계없이 숫자는 채널이라고 하며, 이미지의 모든 숫자는 동일한 형식으로 인코딩된다.
허용되는 형식은 각 숫자를 고정된 비트 수를 사용하여 부호 없는 정수 값으로 인코딩하는 것이며, PNG 규격에서는 이를 ''비트 심도''라고 한다. 허용되는 비트 심도는 채널당 1, 2, 4, 8, 16비트이다.
채널 수는 이미지가 회색조인지 컬러인지, 알파 채널이 있는지에 따라 다르다. PNG는 ''색상 유형''이라고 하는 채널의 다음 조합을 허용한다.
0 (0002) | 회색조 |
2 (0102) | 빨강, 녹색, 파랑: RGB/트루컬러 |
3 (0112) | 인덱스: 색상 팔레트의 인덱스를 포함하는 채널 |
4 (1002) | 회색조 및 알파: 각 픽셀의 불투명도 수준 |
6 (1102) | 빨강, 녹색, 파랑 및 알파 |
색상 유형 및 비트 심도의 허용 조합은 다음과 같다.[11]
색상 유형 | 채널 | 채널당 비트 | ||||
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | ||
인덱스 | 1 | |||||
회색조 | 1 | |||||
회색조 및 알파 | 2 | |||||
트루컬러 | 3 | |||||
트루컬러 및 알파 | 4 |
3. 1. 파일 구조
PNG 파일은 8바이트의 시그니처(매직 넘버)로 시작한다.[91] 파일 헤더 다음에는 이미지 정보를 담고 있는 청크(chunk)들이 오는데, 각 청크는 이미지에 대한 특정 정보를 전달한다. 청크는 필수 청크와 보조 청크로 나뉜다.다음은 8바이트 시그니처의 값과 의미를 나타낸 표이다.
값 | 의미 |
---|---|
89 | 8비트 데이터를 지원하지 않는 시스템을 찾거나 텍스트 파일과의 구분을 위해 사용된다. |
50 4E 47 | ASCII로 PNG라는 글자로, 텍스트 에디터 등에서 쉽게 구분하기 위해 쓰인다. |
0D 0A | DOS 스타일의 줄바꿈(CRLF)으로, DOS-Unix 변환에서 데이터 줄바꿈을 위해 쓰인다. |
1A | DOS에서 TYPE 명령이 쓰였을 때 출력을 멈추기 위해 사용된다. end-of-file 문자. |
0A | Unix 스타일 줄바꿈(LF)으로, Unix-DOS 변환에서 줄바꿈에 사용한다. |
청크는 길이(4 바이트,[9] 빅 엔디안), 청크 유형/이름(4 바이트[10]), 청크 데이터(길이 바이트) 및 CRC(4 바이트[9])의 네 부분으로 구성된다. CRC는 청크 유형과 청크 데이터를 기반으로 계산된 네트워크 바이트 순서 CRC-32이지만 길이는 제외한다.
길이 | 청크 유형 | 청크 데이터 | CRC |
---|---|---|---|
4 바이트 | 4 바이트 | 길이 바이트 | 4 바이트 |
청크 유형은 네 글자 대소문자를 구분하는 ASCII 유형/이름으로 제공된다. FourCC를 참고하라. 이름의 다른 글자 대소문자(문자의 숫자 값의 비트 5)는 비트 필드로, 디코더에게 인식하지 못하는 청크의 특성에 대한 정보를 제공한다.
첫 번째 글자의 대소문자는 청크가 필수인지 여부를 나타낸다. 첫 번째 글자가 대문자이면 청크는 필수이며, 그렇지 않으면 청크는 보조이다. 필수 청크에는 파일을 읽는 데 필요한 정보가 포함되어 있다. 디코더가 인식하지 못하는 필수 청크를 만나면 파일 읽기를 중단하거나 사용자에게 적절한 경고를 제공해야 한다.
PNG 파일을 읽고 렌더링하려면 디코더가 필수 청크를 해석할 수 있어야 한다.
- `IHDR`은 첫 번째 청크여야 하며, 다음 정보를 (이 순서대로) 포함한다.
- 너비 (4바이트)
- 높이 (4바이트)
- 비트 심도 (1바이트, 값 1, 2, 4, 8 또는 16)
- 색상 유형 (1바이트, 값 0, 2, 3, 4 또는 6)
- 압축 방식 (1바이트, 값 0)
- 필터 방식 (1바이트, 값 0)
- 인터레이스 방식 (1바이트, 값 0 "인터레이스 없음" 또는 1 "Adam7 인터레이스") (총 13바이트 데이터).[11]
W3C에 따르면 비트 심도는 "샘플당 또는 팔레트 인덱스당 비트 수 (픽셀당 아님)"로 정의된다.[11]
- `PLTE`는 팔레트를 포함한다. 즉, 색상 목록이다.
- `IDAT`는 여러 IDAT 청크로 분할될 수 있는 이미지를 포함한다. 이러한 분할은 파일 크기를 약간 증가시키지만 스트리밍 방식으로 PNG를 생성할 수 있게 해준다. IDAT 청크는 압축 알고리즘의 출력 스트림인 실제 이미지 데이터를 포함한다.
- `IEND`는 이미지 끝을 나타낸다. IEND 청크의 데이터 필드는 0바이트이거나 비어 있다.
`PLTE` 청크는 색상 유형 3 (인덱싱된 색상)에 필수적이다. 색상 유형 2 및 6 (트루컬러 및 알파가 있는 트루컬러)에는 선택 사항이며 색상 유형 0 및 4 (그레이스케일 및 알파가 있는 그레이스케일)에는 나타나면 안 된다.
3. 2. 파일 헤더
PNG 파일은 8바이트 시그니처로 시작한다.[91] 이 시그니처는 16진수 값으로 `89 50 4E 47 0D 0A 1A 0A`이며, 각 바이트는 다음과 같은 의미를 갖는다.값 (16진수) | 의미 |
---|---|
`89` | 8비트 데이터를 지원하지 않는 시스템을 감지하고, 텍스트 파일이 PNG로 잘못 해석되는 것을 줄인다. |
`50 4E 47` | ASCII로 PNG라는 글자를 나타내어, 텍스트 편집기 등에서 쉽게 구분할 수 있도록 한다. |
`0D 0A` | DOS 스타일의 줄바꿈(CRLF)으로, DOS-Unix 변환에서 데이터 줄바꿈을 감지한다. |
`1A` | DOS에서 type 명령어가 사용되었을 때 파일 표시를 중단하는 파일 끝 문자이다. |
`0A` | Unix 스타일의 줄바꿈(LF)으로, Unix-DOS 변환에서 줄바꿈을 감지한다. |
이러한 시그니처는 PNG 파일이 8비트 데이터를 지원하고, 텍스트 파일과 구분되며, 다양한 운영 체제에서 올바르게 줄바꿈을 처리할 수 있도록 보장한다.
3. 3. 청크 (Chunk)
PNG 이미지 형식에서 청크(Chunk)는 이미지 데이터를 저장하는 기본 단위이다. 각 청크는 특정한 정보를 담고 있으며, PNG 파일을 구성하는 핵심 요소이다.청크는 다음과 같은 구조를 가진다.
길이 | 청크 타입 | 청크 데이터 | CRC |
---|---|---|---|
4 바이트 | 4 바이트 | 길이 바이트 | 4 바이트 |
- 길이(Length): 청크의 길이를 나타내는 4바이트 빅 엔디안 값이다. 청크 타입, 청크 데이터, CRC의 길이를 모두 포함한다.
- 청크 타입(Chunk Type): 청크의 종류를 나타내는 4바이트 ASCII 문자열이다. 대소문자를 구분하며, 각 문자는 특정한 의미를 가진다. FourCC를 참조한다.
- 청크 데이터(Chunk Data): 청크의 실제 데이터를 포함한다. 데이터의 길이는 '길이' 필드에 명시된다.
- CRC(Cyclic Redundancy Check): 청크의 무결성을 검사하기 위한 4바이트 CRC-32 값이다. 청크 타입과 청크 데이터를 기반으로 계산되며, 길이는 포함되지 않는다.
청크 타입은 4개의 ASCII 문자로 구성되며, 각 문자의 대소문자는 다음과 같은 의미를 가진다.
- 첫 번째 문자: 청크의 필수 여부를 나타낸다.
- 대문자: 필수 청크(Critical Chunk) - 파일을 읽는 데 필수적인 정보를 포함한다.
- 소문자: 보조 청크(Ancillary Chunk) - 파일 읽기에 필수적이지 않은 추가 정보를 포함한다.
- 두 번째 문자: 청크의 공개 여부를 나타낸다.
- 대문자: 공개 청크(Public Chunk) - PNG 표준 사양에 정의되어 있거나 특수 목적 공개 청크 레지스트리에 등록된 청크이다.
- 소문자: 비공개 청크(Private Chunk) - 표준 사양에 정의되지 않은 청크이다.
- 세 번째 문자: PNG 표준에 따라 항상 대문자여야 한다. 미래 확장을 위해 예약된 문자이다.
- 네 번째 문자: 청크의 복사 가능 여부를 나타낸다.
- 소문자: 안전하게 복사 가능(Safe-to-copy) - 파일이 수정되어도 해당 청크를 안전하게 복사할 수 있다.
- 대문자: 복사 불가능(Not safe-to-copy) - 파일이 수정되면 해당 청크를 복사할 수 없다.
이러한 청크 구조는 PNG 포맷의 확장성과 순방향 호환성을 제공한다. 즉, 새로운 청크 타입을 추가하여 기능을 확장하면서도 이전 버전의 PNG 파일을 읽을 수 있도록 설계되었다. 이는 디지털 컨테이너 포맷과 유사한 개념이다.
3. 3. 1. 필수 청크
PNG 파일을 읽고 렌더링하려면 디코더가 필수 청크를 해석할 수 있어야 한다.[92]- `IHDR`는 첫 번째 청크로 와야 한다. 여기에는 이미지의 너비, 높이, 비트 수와 컬러 타입을 순서대로 표시한다.[92]
- `PLTE`는 팔레트, 즉 색공간을 표시한다.
- `IDAT`는 여러 개의 IDAT 청크로 쪼개질 수 있는 이미지를 표시한다. 파일 크기가 약간 커지긴 하지만 PNG를 스트리밍 방식으로 전달할 수 있게 만든다. IDAT는 압축 알고리즘의 출력 스트림을 통한 실제 이미지 파일을 갖고 있다.[93]
- `IEND`는 이미지의 끝을 표시한다.
`PLTE`는 컬러 타입 3(인덱스드 컬러, 설정된 색만을 표시한다)에는 필수적이다. 컬러 타입 2와 6(트루 컬러와 트루컬러 + 알파 채널)에는 선택사항이고 컬러 타입 0와 4(그레이스케일과 그레이스케일 + 알파 채널)에는 나타내서는 안된다.
`IHDR`은 첫 번째 청크여야 하며, 다음 정보를 (이 순서대로) 포함한다.
청크 내 오프셋 | 16진수 값 | 10진수 값 | 의미 |
---|---|---|---|
0 | 0x0D | 13 | IHDR 청크는 13바이트의 내용을 가지고 있다. |
4 | 0x49484452 | 헤더 청크를 식별한다. | |
8 | 0x01 | 1 | 이미지는 1픽셀 너비이다. |
12 | 0x01 | 1 | 이미지는 1픽셀 높이이다. |
16 | 0x08 | 8 | 픽셀당 8비트(채널당) |
17 | 0x02 | 2 | 색상 유형 2(RGB/트루컬러) |
18 | 0x00 | 0 | 압축 방법 0(유일한 허용 값) |
19 | 0x00 | 0 | 필터 방법 0(유일한 허용 값) |
20 | 0x00 | 0 | 인터레이스 없음 |
21 | 0x907753DE | 청크의 유형 및 내용에 대한 CRC(길이 제외) |
- **너비 (4바이트)
- **높이 (4바이트)
- **비트 심도 (1바이트, 값 1, 2, 4, 8 또는 16)
- **색상 유형 (1바이트, 값 0, 2, 3, 4 또는 6)
- **압축 방식 (1바이트, 값 0)
- **필터 방식 (1바이트, 값 0)
- **인터레이스 방식 (1바이트, 값 0 "인터레이스 없음" 또는 1 "Adam7 인터레이스") (총 13바이트 데이터).[11]
W3C에 따르면 비트 심도는 "샘플당 또는 팔레트 인덱스당 비트 수 (픽셀당 아님)"로 정의된다.[11]
`PLTE`는 팔레트를 포함한다. 즉, 색상 목록이다.
`IDAT`는 여러 IDAT 청크로 분할될 수 있는 이미지를 포함한다. 이러한 분할은 파일 크기를 약간 증가시키지만 스트리밍 방식으로 PNG를 생성할 수 있게 해준다. IDAT 청크는 압축 알고리즘의 출력 스트림인 실제 이미지 데이터를 포함한다.
청크 내 오프셋 | 16진수 값 | 의미 |
---|---|---|
0 | 0x0C | IDAT 청크는 12바이트의 내용을 가지고 있다. |
4 | 0x49444154 | 데이터 청크를 식별한다. |
8 | 0x08 | 256바이트 윈도우를 사용하는 DEFLATE 압축 방법 |
9 | 0xD7 | ZLIB FCHECK 값, 사전 사용 안 함, 최대 압축 알고리즘 |
10 | 0x63F8CFC00000 | 정적 허프만 코드를 사용하여 압축된 DEFLATE 블록은 0x00 0xFF 0x00 0x00으로 디코딩된다 |
16 | 0x03010100 | ZLIB 검사 값: 압축되지 않은 데이터의 Adler32 체크섬 |
20 | 0x18DD8DB0 | 청크의 유형 및 내용에 대한 CRC(길이 제외) |
`IEND`는 이미지 끝을 나타낸다. IEND 청크의 데이터 필드는 0바이트이거나 비어 있다.
3. 3. 2. 보조 청크
PNG 파일은 감마 값, 배경색, 텍스트 메타데이터 등 여러 이미지 속성을 저장할 수 있다. 또한 PNG는 ICC 색상 프로파일을 통해 색상 관리를 지원한다.[11]- `bKGD`: 기본 배경색을 지정한다. 독립 실행형 이미지 뷰어 등 더 나은 옵션이 없을 때 사용된다.
- `cHRM`: 디스플레이 기본 색상 및 백색점의 색도 좌표를 제공한다.[12]
- `cICP`: ITU-T H.273에 정의된 색 공간, 전송 함수 및 행렬 계수를 지정하며, HDR 이미지에 사용된다.[13]
- `dSIG`: 디지털 서명을 저장한다.[14]
- `eXIf`: Exif 메타데이터를 저장한다.[15]
- `gAMA`: 감마 보정을 지정한다. gAMA 청크는 4바이트로, 감마 값에 100,000을 곱한 정수 값을 저장한다. (예: 감마 1/3.4는 29412로 저장).[11]
- `hIST`: 이미지 각 색상의 히스토그램 또는 총량을 저장한다.
- `iCCP`: ICC 색상 프로파일을 포함한다.
- `iTXt`: 키워드와 UTF-8 텍스트를 포함하며, 압축 및 번역을 위해 IETF 언어 태그로 표시된다. XMP는 이 청크를 'XML:com.adobe.xmp' 키워드와 함께 사용한다.
- `pHYs`: 의도된 픽셀 크기(또는 픽셀 종횡비)를 유지한다. pHYs는 "단위당 픽셀, X축"(4바이트), "단위당 픽셀, Y축"(4바이트), "단위 지정자"(1바이트)를 포함하여 총 9바이트이다.[11]
- `sBIT`: 소스 데이터의 색상 정확도를 나타낸다. 색상 유형에 따라 1~5바이트를 포함한다.[16]
- `sPLT`: 전체 색상 범위를 사용할 수 없을 때 사용할 팔레트를 제안한다.
- `sRGB`: 표준 sRGB 색상 공간이 사용됨을 나타낸다. sRGB 청크는 1바이트로, 렌더링 의도(0, 1, 2, 3)를 나타낸다.[17]
- `sTER`: 입체경 이미지에 대한 스테레오 이미지 표시기 청크이다.[18]
- `tEXt`: ISO/IEC 8859-1 텍스트를 저장하며, 각 청크당 하나의 키-값 쌍을 갖는다. 키는 1~79자, 구분 기호는 널 문자, 값은 최대 허용 청크 크기까지 가능하다.
- `tIME`: 이미지가 마지막으로 변경된 시간을 저장한다.
- `tRNS`: 투명도 정보를 포함한다. 인덱스된 이미지의 경우 하나 이상의 팔레트 항목에 대한 알파 채널 값을, 트루컬러 및 그레이스케일 이미지의 경우 완전히 투명한 단일 픽셀 값을 저장한다.
- `zTXt`: `tEXt`와 동일한 제한으로 압축된 텍스트(및 압축 방법 마커)를 포함한다.
이 청크들의 첫 글자가 소문자인 것은 필수적이지 않음을, 마지막 글자가 소문자인 것은 응용 프로그램이 이해하지 못해도 복사해도 안전함을 의미한다.
- acTL - 애니메이션 PNG임을 나타내며, 총 프레임 수나 루프 횟수를 보존한다.
- fcTL - 애니메이션 PNG의 프레임 제어 정보를 보존한다.
- fdAT - 애니메이션 PNG의 프레임 이미지 데이터를 보존한다.
3. 4. 픽셀 포맷
PNG 이미지의 픽셀은 팔레트의 샘플 데이터 인덱스이거나 샘플 데이터 자체일 수 있다. 팔레트는 PLTE 청크에 포함된 별도의 테이블이다. 단일 픽셀에 대한 샘플 데이터는 1개에서 4개 사이의 숫자로 구성된 튜플로 구성된다. 이 숫자들은 채널이라고 하며, 이미지의 모든 숫자는 동일한 형식으로 인코딩된다.허용되는 형식은 각 숫자를 고정된 비트 수를 사용하여 부호 없는 정수 값으로 인코딩하는 것이다. PNG 사양에서는 이를 ''비트 심도''라고 한다. 허용되는 비트 심도는 채널당 1, 2, 4, 8, 16비트이다.
채널 수는 이미지가 회색조인지 컬러인지, 알파 채널이 있는지에 따라 다르다. PNG는 ''색상 유형''이라고 하는 채널의 다음 조합을 허용한다.
0 (0002) | 회색조 |
2 (0102) | 빨강, 녹색 및 파랑: rgb/트루컬러 |
3 (0112) | 인덱스: 색상 팔레트의 인덱스를 포함하는 채널 |
4 (1002) | 회색조 및 알파: 각 픽셀의 불투명도 수준 |
6 (1102) | 빨강, 녹색, 파랑 및 알파 |
색상 유형 및 비트 심도의 허용 조합은 다음과 같다.[11]
색상 유형 | 채널 | 채널당 비트 | ||||
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | ||
인덱스 | 1 | |||||
회색조 | 1 | |||||
회색조 및 알파 | 2 | |||||
트루컬러 | 3 | |||||
트루컬러 및 알파 | 4 |
3. 5. 투명도
PNG는 다양한 투명도 옵션을 제공한다.[85][86][87] 트루컬러 및 그레이스케일 이미지의 경우 단일 픽셀 값을 투명으로 선언하거나 알파 채널을 추가하여 부분 투명도를 사용할 수 있다. 팔레트 이미지의 경우 알파 값을 팔레트 항목에 추가할 수 있는데, 저장된 값의 수는 전체 팔레트 항목 수보다 적을 수 있으며, 이 경우 나머지 항목은 완전히 불투명한 것으로 간주된다.이진 투명도에 대한 픽셀 값 스캔은 픽셀이 의도치 않게 투명해지는 것을 방지하기 위해 색상 감소 전에 수행되어야 한다.
알파 ''저장''은 "연관된" ("미리 곱해진") 또는 "비연관된" 방식으로 사용될 수 있지만, PNG는 "비연관된" ( "미리 곱해지지 않은") 알파를 표준화했다. 이는 이미지가 알파 ''인코딩''되지 않음을 의미한다. 즉, 오버 연산은 RGB 방출에 알파를 곱하며 방출과 가림을 제대로 나타낼 수 없다.
3. 6. 압축
PNG는 2단계 압축 과정을 거친다.- 사전 압축: 필터링(예측)
- 압축: DEFLATE
PNG는 특허가 없는 무손실 데이터 압축 알고리즘인 DEFLATE를 사용하며, 이는 LZ77과 Huffman 코딩의 조합이다. 관대하게 라이선스된 DEFLATE 구현(예: zlib)이 널리 사용되고 있다.
손실 압축을 사용하는 JPEG와 같은 형식과 비교했을 때, 평균보다 높은 압축 설정을 선택하면 처리 속도는 느려지지만, 파일 크기가 현저하게 줄어드는 경우는 드물다.
DEFLATE가 적용되기 전, 예측 방법을 통해 데이터를 변환하는 필터링 과정을 거친다. 각 이미지 라인에 대해 데이터를 보다 효율적으로 압축할 수 있도록 데이터를 변환하기 위해 ''필터 유형''이 선택된다.
압축은 라인별로 필터 유형을 적응적으로 선택하여 더욱 향상된다.
인터레이싱이 사용되는 경우, 인터레이싱의 각 단계는 별도로 필터링되므로 각 단계가 수신될 때 이미지를 점진적으로 렌더링할 수 있다. 그러나 인터레이싱은 일반적으로 압축 효율을 떨어뜨린다.
PNG 이미지 데이터는 zlib에 의해 압축되지만, 이미지의 특징을 이용하여 압축 효율을 높이기 위해 필터로 사전 처리를 할 수 있도록 되어 있다(전개 시에는 역 필터가 적용된다).
PNG는 Deflate 압축 알고리즘을 사용하며, 형식은 zlib 형식으로 정의되어 있다. Deflate 알고리즘 자체는 PNG 명세서에 기재되어 있지 않다. 압축된 데이터는 그대로 IDAT チャン크에 저장된다.
PNG는 Deflate 이외의 압축 형식을 지원하도록 설계되었지만, Ver1.2 시점에서는 Deflate를 나타내는 한 종류만 사용 가능하다.
3. 6. 1. 필터링
PNG는 2단계 압축 과정을 사용하는데, 그 첫 단계가 필터링(예측)이다. 필터링은 DEFLATE 압축 전에 데이터에 예측 방법을 적용하여 압축 효율을 높이는 과정이다.[20]필터 방법은 전체 이미지에 대해 하나만 사용되지만, 각 이미지 라인(스캔라인)마다 다른 필터 유형을 선택하여 압축 효율을 높일 수 있다. 각 스캔라인의 맨 앞에는 해당 라인에 사용된 필터 유형을 나타내는 바이트가 추가된다.
현재 PNG 규격에는 필터 방법 0만 정의되어 있으며, 이 방법은 각 픽셀의 값을 예측하기 위해 이전 인접 픽셀들의 값을 사용한다. 예측값과 실제 값의 차이를 계산하여 저장하는데, 이는 DPCM과 유사하다. 이 방식은 특히 위쪽 라인과 유사한 라인의 경우, 원본 데이터보다 0에 가까운 값이 많아져 압축 효율을 높인다.
필터 방법 0에는 다음과 같은 5가지 필터 유형이 있다.[20]
유형 | 필터 이름 | 예측된 값 |
---|---|---|
0 | 없음 | 0 (원본 바이트 값을 그대로 사용) |
1 | 서브(Sub) | 왼쪽 바이트 (A) |
2 | 업(Up) | 위쪽 바이트 (B) |
3 | 평균(Average) | 왼쪽 바이트(A)와 위쪽 바이트(B)의 평균 (내림) |
4 | 페스(Paeth) | 에 가장 가까운 A, B, 또는 C |
- A: 왼쪽 픽셀의 바이트 값
- B: 위쪽 픽셀의 바이트 값
- C: 왼쪽 위 픽셀의 바이트 값
페스 필터는 앨런 W. 페스(Alan W. Paeth)의 알고리즘을 기반으로 한다.[21]
예를 들어 픽셀값이 100, 101, 102, 103, 104, 105 와 같이 배열되어 있을 때, "Sub" 필터를 적용하면 100, 1, 1, 1, 1, 1 이 된다.
압축 프로그램은 각 라인에 대해 가장 효율적인 필터 유형을 적응적으로 선택할 수 있다.
3. 7. 인터레이싱
PNG는 Adam7 알고리즘을 사용한 2차원, 7-패스 인터레이싱 방식을 제공한다.[23] 이 방식은 GIF의 1차원, 4-패스 방식보다 더 정교하며, 특히 쌍3차 보간법과 같은 보간 알고리즘을 사용하는 경우 전송 초기에 더 선명한 저해상도 이미지를 볼 수 있게 해준다.하지만 7-패스 방식은 간단한 방식보다 데이터 압축률이 더 낮아지는 경향이 있다. 더 자세한 내용은 사양서[85][86][87]를 참조하면 된다.

4. 애니메이션
PNG 핵심 형식은 애니메이션을 지원하지 않는다. PNG 그룹 구성원들이 설계한 MNG는 PNG의 확장 형식이다. MNG는 PNG의 기본 구조와 청크를 공유하지만, 훨씬 더 복잡하며 다른 파일 시그니처를 가지고 있어 표준 PNG 디코더와 자동으로 호환되지 않는다. 이 때문에 대부분의 웹 브라우저와 애플리케이션은 MNG를 지원하지 않거나 지원을 중단했다.
MNG의 복잡성 때문에 모질라 재단 개발자들은 APNG를 제안했다. APNG는 PNG를 기반으로 하며, 애니메이션을 지원하고 MNG보다 간단하다. APNG는 APNG를 지원하지 않는 PNG 디코더에 단일 이미지 표시로의 폴백을 제공한다. 현재, APNG 형식은 모든 주요 웹 브라우저에서 지원된다.[24] APNG는 파이어폭스 3.0 이상, 페일 문 (모든 버전), 사파리 8.0 이상에서 지원된다.[25] 구글 크롬은 크로미움 59.0에서 APNG 지원이 추가되면서 지원되기 시작했다.[26][27] 오페라는 10–12.1 버전에서 APNG를 지원했지만, 블링크 렌더링 엔진으로 전환한 15 버전에서 지원이 중단되었다가 오페라 46에서 다시 지원이 추가되었다(크로미움 59에서 상속됨).[28] 마이크로소프트 엣지는 크로미움 기반 엔진으로 전환한 버전 79.0부터 APNG를 지원한다.
PNG 그룹은 2007년 4월 APNG를 채택하지 않기로 결정했다.[29] ANG, aNIM/mPNG, "GIF 내 PNG" 및 그 하위 집합인 "GIF 내 RGBA"를 포함한 여러 대안이 논의되었다.[30] 그러나 현재 APNG만이 광범위한 지원을 받고 있다.
PNG 사양 제3판 개발과 함께, 현재 PNG 워킹 그룹에서 관리하고 있으며,[31] APNG는 마침내 확장 기능으로 사양에 통합될 것이다.[32]
5. 다른 포맷과의 비교
PNG는 다른 이미지 포맷들과 비교했을 때 몇 가지 장단점을 가진다.
- '''GIF와의 비교:''' 작은 이미지의 경우 GIF가 PNG보다 더 나은 압축을 제공할 수 있지만, 대부분의 경우 PNG의 압축률이 더 높다.[37] PNG는 GIF의 단색 투명층과 달리 8비트 알파 채널을 이용한 다양한 투명층을 지원하며,[33] 256색까지만 지원하는 GIF와 달리 트루 컬러를 지원하여 더 풍부한 색상을 표현할 수 있다.[33] GIF는 애니메이션을 기본 지원하지만, PNG는 별도의 확장 기능을 통해서만 가능하다.
- '''JPEG와의 비교:''' JPEG는 사진과 같이 부드러운 색상 변화가 많은 이미지에 적합하며, 비가역 압축 방식을 사용하여 PNG보다 파일 크기를 작게 만들 수 있다. 하지만 JPEG는 압축 과정에서 이미지에 잡티가 생길 수 있고, 반복 저장 시 화질 저하가 발생한다. 반면 PNG는 무손실 압축 방식으로 이미지 품질을 유지하며, 특히 문자나 날카로운 경계가 있는 이미지 압축에 효과적이다.

- '''WebP, AVIF와의 비교:''' WebP는 구글이 개발한 포맷으로, PNG, JPEG, GIF를 대체하기 위해 만들어졌다. WebP는 손실 압축과 무손실 압축을 모두 지원하며, 애니메이션도 지원한다. WebP는 PNG보다 파일 크기를 더 줄일 수 있어 웹 로딩 속도를 높이는 데 유리하다.[40] 하지만 WebP는 일부 이미지 편집 프로그램이나 소셜 미디어와 호환되지 않고, 모든 웹 브라우저에서 지원되지 않는다는 단점이 있다.[41][42]
PNG는 Exif 이미지 데이터를 임베딩하기 위한 표준을 명시적으로 포함하고 있지 않지만, 비중요 보조 청크 레이블 `eXIf`를 사용하여 EXIF 데이터를 임베딩할 수 있다.[35]
태그 이미지 파일 형식(TIFF)은 매우 다양한 옵션을 제공하여 전문 이미지 편집 프로그램 간의 교환 형식으로 유용하지만, 웹 브라우저 등에서는 지원이 거의 없다. TIFF는 렘펠-지브-웰치(LZW) 압축 알고리즘을 사용하며, 이는 2003년까지 특허로 보호되었다. PNG는 비-사전 곱셈 알파만 지원하는 반면,[19] TIFF는 "연관된" (사전 곱셈) 알파도 지원한다.
5. 1. GIF와의 비교
- 대부분의 경우 PNG는 GIF보다 압축률이 높다.[37]
- GIF의 단색 투명층과 달리 PNG는 8비트 알파 채널을 이용한 다양한 투명층을 지원한다.[33]
- 256색까지 지원하는 GIF와 달리 PNG는 트루 컬러를 지원한다.[33]
- GIF에서는 제공되는 컴퓨터 애니메이션을 PNG는 지원하지 않는다. (대안으로 PNG에 기반한 APNG, JNG, MNG와 같은 파일 형식이 제안되었다.)
- 작은 이미지의 경우, GIF는 PNG보다 더 나은 압축을 달성할 수 있다.
- PNG 형식에서 GIF로 이미지를 변환할 때 PNG 이미지가 256개 이상의 색상을 가지고 있다면 포스터화로 인해 이미지 품질이 저하될 수 있다.
- GIF와 비교하면 압축/전개에 다소 시간이 걸리지만, 용량은 GIF보다 작기 때문에 전송 시간 단축을 고려하면 큰 문제가 되지 않는다.
- 인터레이스 GIF와 인터레이스 PNG를 비교하면, 인터레이스 PNG가 압축률이 낮다.
- 인터레이스 형식의 알고리즘이 다르며, GIF보다 빠른 단계에서 전체적인 모습이 보인다.
5. 2. JPEG와의 비교
JPEG는 사진과 같은 이미지 데이터를 비가역 압축 방식을 사용하여 PNG보다 더 작은 파일 크기로 만들 수 있다. JPEG 압축은 양자화의 영향으로 잡티가 생길 수 있지만, PNG는 이러한 잡티 없이 깔끔하게 이미지를 표현한다. 특히 문자나 날카로운 경계가 있는 그림은 JPEG보다 PNG가 뭉개짐 없이 압축을 더 잘 수행한다.PNG는 비손실 압축이므로 고화질 재편집이 필요한 경우에 적합하다. JPEG는 저장할 때마다 손실이 누적되어 이미지 품질이 저하될 수 있다. 따라서 편집할 이미지는 PNG로 저장하는 것이 좋다. 사진 이미지 압축에 효율적인 무손실 압축 형식으로는 WebP와 Adobe DNG가 있지만, 널리 지원되지 않거나 독점적인 경우가 많다.
초기 웹 브라우저들은 PNG 이미지를 지원하지 않았고, JPEG와 GIF가 주요 이미지 형식으로 사용되었다. 하지만 PNG 형식은 작은 그라데이션 이미지를 표현하는 데 최적의 선택이 되었고, 현대 브라우저에서는 CSS를 사용하여 그라데이션을 표시하므로 이미지가 필요하지 않게 되었다.
5. 3. WebP, AVIF와의 비교
WebP는 PNG, JPEG, GIF를 대체하기 위해 구글이 개발한 형식이다.[38] WebP는 손실 압축과 무손실 압축을 모두 지원하지만, PNG는 무손실 압축만 지원한다. 또한 WebP는 애니메이션을 지원하는데, 이는 이전에는 GIF 파일에서만 가능했다.[39]WebP가 PNG보다 개선된 점은 파일 크기가 크게 줄어들어 웹사이트에 삽입 시 로딩 시간이 더 빨라진다는 것이다. 구글은 무손실 WebP 이미지가 PNG 파일보다 26% 더 작다고 주장한다.[40]
PNG와 달리 WebP는 다양한 이미지 편집 프로그램 및 소셜 미디어 웹사이트와 호환되지 않는다는 비판을 받았다.[41] 또한 WebP는 모든 웹 브라우저에서 지원되지 않아, 웹 이미지 호스팅 제공업체가 사용자에게 표시할 대체 이미지를 만들어야 할 수 있으며, 이는 WebP의 잠재적인 저장 공간 절약 효과를 무효화할 수 있다.[42]
6. 소프트웨어 지원
PNG 형식은 어도비 포토샵, 코렐의 포토-페인트 및 페인트 샵 프로, GIMP, 그래픽컨버터 등 많은 그래픽 프로그램에서 널리 지원된다.[49] libpng는 PNG 형식의 공식 참조 구현 프로그래밍 라이브러리이며, 관대한 자유 소프트웨어 라이선스 조건에 따라 자유 소프트웨어로 배포되어 자유 운영 체제에서 중요한 시스템 라이브러리로 사용된다.
PNG 아이콘은 1999년 이후 GNOME과 같은 데스크톱 환경을 포함한 대부분의 리눅스 배포판에서 지원되었으며,[68] 2006년에는 윈도우 비스타에서 마이크로소프트 윈도우의 PNG 아이콘 지원이 도입되었다.[69] AmigaOS 4, AROS, macOS, iOS, MorphOS에서도 PNG 아이콘이 지원되며, 안드로이드는 PNG를 광범위하게 사용한다.
6. 1. PNG 지원 주요 소프트웨어
어도비 포토샵, 코렐의 포토-페인트 및 페인트 샵 프로, GIMP, 그래픽컨버터, 헬리콘 필터, ImageMagick, 잉크스케이프, IrfanView, 픽셀 이미지 편집기, 페인트닷넷, 자라 포토 & 그래픽 디자이너 등 많은 그래픽 프로그램에서 널리 지원된다.6. 2. 웹 브라우저 지원
PNG는 1997년 인터넷 익스플로러 4.0b1(NT의 경우 32비트만 해당)과 넷스케이프 4.04에서 처음 지원되기 시작했다.[50] 자유 소프트웨어 재단[51]과 월드 와이드 웹 컨소시엄(W3C)[52]의 요청에도 불구하고, 웹사이트에서 PNG 채택은 인터넷 익스플로러의 늦고 버그가 많은 지원, 특히 투명성 문제로 인해 상당히 느렸다.[55]PNG 호환 브라우저에는 사파리, 구글 크롬, 모질라 파이어폭스, 오페라, 카미노, 인터넷 익스플로러, 마이크로소프트 엣지 등이 있다.
특히 2011년 출시된 9.0 미만의 인터넷 익스플로러(Windows) 버전은 PNG 이미지를 제대로 렌더링하지 못하는 여러 문제를 가지고 있었다.[56]
2000년대에 압도적인 점유율을 자랑했던 인터넷 익스플로러는 버전 6까지 알파 채널을 가진 PNG 이미지를 제대로 렌더링하지 못했다. 2006년 11월에 출시된 버전 7에서 정확하게 렌더링할 수 있게 되었다.
PNG는 GIF와 마찬가지로 1색 투과도 처리가 가능하며, 이 기능은 Internet Explorer 5에서도 지원되었다. 또한 IE5.5는 알파 채널이 있는 PNG를 제대로 표시할 수 있는 ActiveX 플러그인 (AlphaImageLoader)을 탑재하고 있어, 이 기능을 사용하도록 HTML 파일에 기술하면 표시할 수 있었다. 그러나 IE 설정에 따라 알파 채널로 작동하지 않으며, 다른 브라우저와의 호환성을 고려하면 굳이 이 기능을 이용할 가치는 거의 없었다.
PNG는 지원 브라우저의 증가와 함께 보급되었다.
6. 3. 파일 크기 최적화
PNG 파일 크기는 인코딩 및 압축 방식에 따라 달라질 수 있다. PNG는 GIF보다 최신 압축 알고리즘을 사용하지만, 다음과 같은 이유로 GIF보다 파일 크기가 커질 수 있다.- 색상 수 제한: GIF는 256색만 지원하는 반면, PNG는 트루 컬러 이미지를 저장할 때 원본 색상을 모두 저장한다.
- 메타데이터: PNG 파일에는 메타데이터가 추가될 수 있다. (예: 어도비 파이어웍스)
- 압축 알고리즘 구현: 어도비 포토샵의 일부 구 버전은 PNG 압축 알고리즘을 제대로 구현하지 못했다.
그러나, 동일한 정보(256색, 보조 청크/메타데이터 없음)를 가진 PNG 파일은 효과적인 압축기로 압축하면 일반적으로 GIF 이미지보다 작다. PNG의 DEFLATE 성능이 GIF의 LZW보다 뛰어나고, PNG의 예측 필터가 추가적인 사전 압축 계층을 통해 2차원 이미지 구조를 고려하여 파일을 더 압축하기 때문이다.
PNG 파일 크기를 줄이기 위해 다음과 같은 오픈 소스 도구를 사용할 수 있다.
이러한 도구들은 MS-DOS에서 유닉스, 리눅스 등 다양한 환경을 지원한다.
PNG 파일 크기는 다음 요인에 의해 달라진다.
- 색상 깊이: 픽셀당 1~64비트까지 가능하다.
- 보조 청크: PNG는 메타데이터를 지원하며, 이는 편집에는 유용하지만 웹사이트 등에서는 불필요할 수 있다.
- 인터레이싱: Adam7 알고리즘의 각 패스가 개별적으로 필터링되므로 파일 크기가 증가할 수 있다.[37]
- 필터: 사전 압축 단계로서 각 행은 예측 필터로 필터링되며, 이는 행마다 변경될 수 있다.
- 압축: 추가적인 계산을 통해 DEFLATE 압축기는 더 작은 파일을 생성할 수 있다.
따라서 높은 색상 깊이, 최대 메타데이터, 인터레이싱, 압축 속도 사이에는 파일 크기 절충이 있다.
PNG는 무손실 형식이지만, PNG 인코더는 PNG 압축을 개선하기 위해 손실 방식으로 이미지 데이터를 전처리할 수 있다. 예를 들어, 트루컬러 PNG를 256색으로 양자화하면 인덱스 색상 유형을 사용하여 파일 크기를 줄일 수 있다.[71]
트루컬러 이미지를 8비트 팔레트(GIF와 같이)로 줄이면 결과 이미지 데이터가 일반적으로 훨씬 작아진다. 따라서 트루컬러 PNG는 색상이 감소된 GIF보다 일반적으로 크지만, PNG는 색상이 감소된 버전을 비슷한 크기의 팔레트 파일로 저장할 수 있다.
PNG 파일을 최적화하는 데 사용할 수 있는 다양한 도구는 다음과 같은 기능을 수행한다.
- (선택 사항) 보조 청크 제거
- 색상 심도 감소
- 줄별 필터 선택 최적화
- DEFLATE 압축 최적화
대표적인 PNG 최적화 도구는 다음과 같다.
- pngcrush
- AdvanceCOMP 패키지의 advpng
- pngout
- zopflipng
각 도구의 기능 비교는 다음과 같다.
zopflipng가 사용 가능해지기 전에는 png 최적화를 위해 두 가지 도구를 순차적으로 조합하여 사용하는 것이 일반적이었다.
대부분의 PNG 최적화 도구는 PNG 파일에서 모든 색상 보정 데이터(감마, 화이트 밸런스, ICC 색상 프로필, 표준 RGB 색상 프로필)를 제거하는 기능을 가지고 있다. 예를 들어, pngcrush를 사용하여 이를 수행하는 명령은 다음과 같다.
`pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB ''InputFile.png'' ''OutputFile.png''`
pngcrush, pngout, zopflipng는 모두 필터 유형을 선택하는 옵션을 제공한다. Zopflipng는 필터링을 최적화하기 위한 무차별 대입 검색을 포함하여 3가지의 서로 다른 적응형 방법을 제공한다.[77]
Zopfli와 LZMA SDK는 성능 저하를 대가로 데이터 압축률이 zlib 참조 구현보다 높은 DEFLATE 구현을 제공한다.
올바르게 인코딩 처리하여 메타데이터를 포함하지 않도록 생성된 PNG 이미지는 동일하게 처리하여 생성된 GIF 이미지보다 작아진다.
인터레이스 PNG는 인터레이스 GIF에 비해 압축률이 낮아 파일 사이즈가 커지는 경우가 많다. 또한, 인터레이스 PNG는 일반 PNG보다 파일 사이즈가 커지기 쉽다.
소프트웨어에 따라 출력되는 PNG 파일의 사이즈는 반드시 최적화되지 않으므로, 파일 사이즈를 줄이기 위해서는 PNG 최적화 소프트웨어 등으로 PNG 파일을 최적화하는 것이 좋다.
7. 같이 보기
- libpng
- 그래픽 파일 형식 비교
참조
[1]
웹사이트
ISO/IEC 15948:2004 – Information technology – Computer graphics and image processing – Portable Network Graphics (PNG): Functional specification
http://www.iso.org/i[...]
International Organization for Standardization
2004-03-03
[2]
웹사이트
History of PNG
http://libpng.org/pu[...]
libpng
2010-05-29
[3]
웹사이트
Definition of PNG noun from the Oxford Advanced Learner's Dictionary
https://www.oxfordle[...]
[4]
웹사이트
Portable Network Graphic .PNG File Description
https://surferhelp.g[...]
[5]
웹사이트
Web Review: PNG's NOT GIF!
https://people.apach[...]
[6]
웹사이트
Registration of new Media Type image/png
https://www.iana.org[...]
IANA
1996-07-27
[7]
뉴스
The GIF Is Dead. Long Live the GIF.
https://www.popularm[...]
2019-10-30
[8]
웹사이트
Portable Network Graphics (PNG) Specification and Extensions
http://libpng.org/pu[...]
2011-09-29
[9]
서적
PoC or GTFO
https://books.google[...]
No Starch Press
2017-10-31
[10]
서적
PoC or GTFO
https://books.google[...]
No Starch Press
2017-10-31
[11]
웹사이트
11.2.2 `IHDR` Image header
https://www.w3.org/T[...]
W3C
2003
[12]
웹사이트
PNG Specification (Third Edition), cICP Coding-independent code points for video signal type identification
https://www.w3.org/T[...]
2023-09-21
[13]
웹사이트
Adding support for HDR imagery to the PNG format
https://github.com/w[...]
W3C Color on the Web Community Group
2023-05-03
[14]
웹사이트
PNG Digital Signatures: Extension Specification
http://libpng.downlo[...]
2008-04-17
[15]
웹사이트
Extensions to the PNG 1.2 Specification, version 1.5.0
http://ftp-osl.osuos[...]
[16]
웹사이트
PNG (Portable Network Graphics) Specification \ Version 1.0
https://www.w3.org/T[...]
[17]
웹사이트
PNG Specification: Chunk Specifications
http://libpng.org/pu[...]
[18]
웹사이트
PNG News from 2006
http://libpng.org/pu[...]
Libpng.org
[19]
웹사이트
PNG Specification: Rationale
http://www.w3.org/TR[...]
[20]
웹사이트
Filter Algorithms
http://libpng.org/pu[...]
[21]
논문
Image File Compression Made Easy
Academic Press, San Diego
1991
[22]
논문
PNG: The Portable Network Graphic Format
http://www.ddj.com/a[...]
1995-07
[23]
웹사이트
Introduction to PNG
http://nuwen.net/png[...]
nuwen.net
[24]
웹사이트
Can I use... Support tables for HTML5, CSS3, etc
https://caniuse.com/[...]
[25]
웹사이트
iOS 8 and iPhone 6 for web developers and designers: next evolution for Safari and native webapps
http://www.mobilexwe[...]
mobilexweb.com
2014-09-17
[26]
웹사이트
chromium / chromium / src / 7d2b8c45afc9c0230410011293cc2e1dbb8943a7
https://chromium.goo[...]
2017-03-14
[27]
웹사이트
chromium / chromium / src / 59.0.3047.0..59.0.3053.0
https://chromium.goo[...]
2017-03-27
[28]
웹사이트
Dev.Opera — What's new in Chromium 59 and Opera 46
https://dev.opera.co[...]
[29]
웹사이트
Vote failed: APNG 20070405a
http://sourceforge.n[...]
2007-04-20
[30]
웹사이트
PNG Group animation proposal comparison + test-software
http://gjuyn.xs4all.[...]
[31]
웹사이트
PNG Third Edition, Explained
https://github.com/w[...]
2023-05-24
[32]
웹사이트
PNG Specification (Third Edition), APNG: frame-based animation
https://www.w3.org/T[...]
2023-09-21
[33]
웹사이트
A Basic Introduction to PNG Features
http://libpng.org/pu[...]
Libpng.org
[34]
웹사이트
GIF, PNG, JPG. Which One To Use?
http://www.sitepoint[...]
Sitepoint.com
2009-08-03
[35]
웹사이트
Extensions to the PNG 1.2 Specification, Version 1.5.0
http://ftp-osl.osuos[...]
[36]
웹사이트
T.87 : Lossless and near-lossless compression of continuous-tone still images – Baseline
http://www.itu.int/n[...]
International Telecommunication Union
2011-03-20
[37]
웹사이트
Chapter 9. Compression and Filtering
http://libpng.org/pu[...]
2003
[38]
웹사이트
WebP
https://www.loc.gov/[...]
2024-08-22
[39]
웹사이트
What is WebP? Pros and cons of this next-gen image format
https://99designs.co[...]
2024-08-22
[40]
웹사이트
An image format for the Web WebP
https://developers.g[...]
2024-08-22
[41]
뉴스
Here's why you have to deal with so many annoying webPs now
https://www.pcgamer.[...]
2024-08-22
[42]
웹사이트
What is WebP? Pros and cons of this next-gen image format
https://99designs.co[...]
2024-08-22
[43]
웹사이트
AVIF: Meet the Next Level Image File Format
https://aomedia.org/[...]
2024-09-26
[44]
웹사이트
PNG vs AVIF: The Ultimate Image Format Battle Coconut©
https://www.coconut.[...]
2024-09-26
[45]
웹사이트
AVIF vs. WebP: 4 Key Differences and How to Choose
https://cloudinary.c[...]
2024-09-26
[46]
웹사이트
AVIF vs. WebP: 4 Key Differences and How to Choose
https://cloudinary.c[...]
2024-09-26
[47]
웹사이트
PNG alpha transparency Can I use... Support tables for HTML5, CSS3, etc
https://caniuse.com/[...]
2024-09-26
[48]
웹사이트
AVIF image format Can I use... Support tables for HTML5, CSS3, etc
https://caniuse.com/[...]
2024-09-26
[49]
웹사이트
libpng
http://libpng.org/pu[...]
2013-07-13
[50]
웹사이트
Use of PNG Images to Display Data
http://oregon.usgs.g[...]
Oregon Water Science Center
2006-02-16
[51]
웹사이트
Why There Are No GIF files on GNU Web Pages
https://www.gnu.org/[...]
2008-12-16
[52]
웹사이트
PNG Fact Sheet
http://www.w3.org/Pr[...]
World Wide Web Consortium
1996-10-07
[53]
웹사이트
Resource page for gif2png 2.5.11
http://www.catb.org/[...]
[54]
웹사이트
Burn All GIFs
http://burnallgifs.o[...]
[55]
잡지
PNG Transparency in Internet Explorer
https://www.pcmag.co[...]
2004-10-05
[56]
웹사이트
Browsers with PNG Support
http://libpng.org/pu[...]
2009-03-14
[57]
웹사이트
Windows Explorer Crashes When I Click on a Fireworks PNG File to View It
http://kb.adobe.com/[...]
Adobe Systems
2007-06-05
[58]
웹사이트
Unable to view .png images with Internet Explorer 4.0
http://support.micro[...]
[59]
웹사이트
PNGs That Are Inside of an Object Tag Print as a Negative Image
http://support.micro[...]
[60]
웹사이트
PNG Images Are Printed Improperly in Internet Explorer 5.01
http://support.micro[...]
[61]
웹사이트
You cannot view some PNG images in Internet Explorer 6
http://support.micro[...]
[62]
웹사이트
You cannot use Internet Explorer 6 to open a PNG file that contains one or more zero-length IDAT chunks
http://support.micro[...]
[63]
웹사이트
PNG Frequently Asked Questions
http://libpng.org/pu[...]
[64]
웹사이트
PhD: Portable Network Graphics Lose Transparency in Web Browser
http://support.micro[...]
[65]
웹사이트
PNG Files Do Not Show Transparency in Internet Explorer
http://support.micro[...]
[66]
웹사이트
Cross-Browser Variable Opacity with PNG: A Real Solution
http://www.alistapar[...]
2002-12-21
[67]
웹사이트
IE7 alpha transparent PNG + opacity
http://channel9.msdn[...]
2009-01-23
[68]
웹사이트
GNOME 1.0 Library Roadmap
http://developer.gno[...]
2007-12-19
[69]
웹사이트
Windows Vista – Icons
http://www.oone.goog[...]
2007-11-12
[70]
문서
The filtering is used to increase the similarity to the data, hence increasing the compression ratio. However, there is theoretically no formula for similarity, nor absolute relationship between the similarity and compressor, thus unless the compression is done, one can't tell one filter set is better than another.
[71]
웹사이트
PNG can be a lossy format
http://pngmini.com/l[...]
Pngmini.com
2014-02-01
[72]
문서
Use pngout -f6 to reuse previous filter set
[73]
문서
The tools offering such feature could act as a pure re-deflater to PNG files.
[74]
문서
zlib, the reference deflate implementation, compression is suboptimal even at the maximum level. See Zopfli, zip format in 7-zip and pngout.
[75]
문서
Not only does advpng not support color reduction, it also fails on images with a reduced colorspace.
[76]
문서
Advpng can only apply filter 0 globally, thus it's neither yes or no, but N/A.
[77]
문서
pngcrush|pngout -f OR zopflipng --filters
[78]
문서
zopflipng --filters=p
[79]
문서
Pngoutwin's setting dialog for optimization offers the user a selection of filter strategies.
[80]
웹사이트
nvidia.com 製品情報 3D 画像
http://www.nvidia.co[...]
2012-08-09
[81]
웹사이트
History of PNG
http://www.libpng.or[...]
Libpng.org
2012-05-29
[82]
웹사이트
GIF,JPEG OR PNG?
http://web-building.[...]
2012-08-08
[83]
웹사이트
GNUのウェブページにGIFファイルが一つも無い理由
https://www.gnu.org/[...]
2021-12-28
[84]
웹사이트
日本産業標準調査会:廃止規格検索 X4242
https://www.jisc.go.[...]
日本工業標準調査会
[85]
서적
ISO/IEC 15948:2004
https://www.iso.org/[...]
ISO
[86]
웹사이트
PNG 1.2 仕様書 日本語訳
http://tech.millto.n[...]
2005-06-24
[87]
웹사이트
Portable Network Graphics (PNG) Specification and Extensions
http://www.libpng.or[...]
2012-08-09
[88]
웹인용
ISO/IEC 15948:2004 – Information technology – Computer graphics and image processing – Portable Network Graphics (PNG): Functional specification
http://www.iso.org/i[...]
2011-02-19
[89]
웹인용
History of PNG
http://www.libpng.or[...]
Libpng.org
2010-05-29
[90]
웹인용
IEC standard (scope)
http://www.libpng.or[...]
2003-11-10
[91]
웹인용
PNG (Portable Network Graphics) Specification, Version 1.1–12. Appendix: Rationale
http://www.libpng.or[...]
Libpng.org
2010-10-20
[92]
웹인용
Chunk Specifications
http://www.libpng.or[...]
Massachusetts Institute of Technology (MIT)
2011-01-30
[93]
웹인용
Portable Network Graphics (PNG) Specification (Second Edition)
http://www.w3.org/TR[...]
W3.org
2013-05-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com