휴대용 네트워크 그래픽
Portable Network Graphics![]() | 이 글은 갱신할 필요가 있다.주어진 이유는 webp 및 avif 이미지 형식과 비교하기 때문이다.2021년 10월). 가능한 하도록 이 |
8비트 투명 채널을 가진 PNG 이미지, 체크무늬 배경 위에 겹쳐진 이미지, 일반적으로 투명성을 나타내기 위해 그래픽 소프트웨어에 사용된다. | |
파일 이름 확장명 | .png |
---|---|
인터넷 미디어 유형 | 이미지/png |
유형코드 | PNGf PNG |
동일 유형 식별자(UTI) | 공공의 |
IMT2000 3GPP - UTI 순응 | public.image |
매직넘버 | 89 50 4e 47 0d 0a 1a 0a |
개발자 | PNG 개발 그룹(W3C에 기부) |
초기 릴리즈 | 1996년 10월 1일 | 전 )
형식 유형 | 무손실 비트맵 이미지 형식 |
까지 확장 | APNG, JNG, MNG |
표준 | ISO/IEC 15948,[1] IETF RFC 2083 |
오픈 포맷? | 네 |
PNG(Portable Network Graphics, 공식 발음 /pŋ//[2][3]PING, 구어 발음 /ˌpiːnˈdʒiː/[4]PIE-en-JEE)는 무손실 데이터 압축을 지원하는 래스터그래픽 파일 형식이다.PNG는 GIF(Graphics Interchange Format)를 위한 개선된 비특허적 대체물로 개발되었다. 비공식적으로 PNG 이니셜은 재귀적 약자 "PNGs not GIF"[5]를 의미한다.
PNG는 팔레트 기반 영상(24비트 RGB 또는 32비트 RGBA 컬러 팔레트 포함), 그레이스케일 영상(투명성을 위한 알파 채널 포함 또는 제외), 풀컬러 비 팔레트 기반 RGB 또는 RGBA 영상을 지원한다.PNG 워킹 그룹은 전문적인 품질의 인쇄 그래픽이 아닌 인터넷에서 이미지를 전송하는 형식을 설계했기 때문에 CMYK와 같은 비 RGB 컬러 공간은 지원되지 않는다.PNG 파일은 기본 픽셀과 RFC 2083에 문서화된 텍스트 주석 및 무결성 검사 같은 기타 정보를 인코딩하는 확장 가능한 청크 구조의 단일 이미지를 포함한다.[6]
PNG 파일은 파일 확장자를 사용한다. PNG
또는png
MIME 미디어 유형이 할당됨image/png
.[7] PNG는 1997년 3월에 정보 RFC 2083으로, 2004년에는 ISO/IEC 15948 표준으로 발행되었다.[1]
역사와 발전
PNG 포맷을 만든 동기는 1994년 12월 28일 그래픽 교환 포맷(GIF) 포맷에 사용된 렘펠-지브-웰치(LZW) 데이터 압축 알고리즘이 유니시스로부터 특허를 받았다는 사실을 깨달았기 때문이다.특허는 GIF를 지원하는 모든 소프트웨어가 로열티를 지불할 것을 요구해 유스넷 이용자들의 비난이 빗발쳤다.그 중 한 사람은 토마스 부텔이었는데, 그는 1995년 1월 4일 그가 GIF에 대한 자유로운 대안에 대한 계획을 고안한 Usenet 뉴스 그룹 "컴퍼시픽스"에 선행 토론 실마리를 게시했다.그 줄의 다른 사용자들은 나중에 최종 파일 형식의 일부가 될 많은 제안을 내놓았다.인기 JPEG 뷰어 QPEG의 저자 올리버 프롬메는 PING 이름을 제안했고, 결국 PING는 GIF가 아님을 의미하는 재귀적 약자인 PNG가 되었다..png
증축의나중에 구현된 다른 제안사항으로는 Delflate 압축 알고리즘과 24비트 컬러 지원이 포함되었는데, GIF에서 후자의 부족은 또한 팀이 파일 형식을 만들도록 동기를 부여한다.이 그룹은 PNG 개발 그룹으로 알려지게 되었고, 토론이 급속도로 확대됨에 따라, 나중에 CompuServe 포럼과 관련된 메일링 리스트를 사용하게 되었다.[2][8]
PNG의 전체 사양은 1996년 10월 1일 W3C의 승인에 따라 발표되었고, 이후 1997년 1월 15일 RFC 2083으로 발표되었다.사양서는 1998년 12월 31일 감마 및 색상 교정을 위한 기술적 문제를 다룬 버전 1.1로 개정되었다.1999년 8월 11일 발매된 버전 1.2는 다음과 같이 덧붙였다.iTXt
규격의 유일한 변경 사항인 청크(chunk)와 재포맷된 1.2 버전은 2003년 11월 10일 W3C 표준의 두 번째 판으로,[9] 2004년 3월 3일 국제 표준(ISO/IEC 15948:2004)으로 출시되었다.[10][1]
GIF는 애니메이션을 허용하지만, PNG는 단일 이미지 포맷이어야 한다고 결정했다.[11]2001년에 PNG 개발자들은 애니메이션에 대한 지원을 받아 MNG(Multiple-image Network Graphics) 포맷을 출판하였다.MNG는 중간 수준의 애플리케이션 지원을 달성했지만, 메인스트림 웹 브라우저에서는 충분하지 않았고 웹 사이트 설계자나 출판사에서는 전혀 사용되지 않았다.2008년, 특정 모질라 개발자들은 유사한 목표를 가진 애니메이션 휴대용 네트워크 그래픽스(APNG) 형식을 출판하였다.APNG는 Gecko-와 Presto 기반 웹 브라우저가 기본적으로 지원하는 포맷으로, 소니의 플레이스테이션 포터블 시스템(정상적인 PNG 파일 확장자 사용)의 썸네일에도 흔히 사용된다.2017년 크롬 기반 브라우저는 APNG 지원을 채택했다.2020년 1월 마이크로소프트 엣지는 크롬을 기반으로 하여 APNG에 대한 지원을 이어받았다.이것으로 모든 주요 브라우저들은 현재 APNG를 지원한다.
PNG 워킹 그룹
원래의 PNG 규격은 컴퓨터 그래픽 전문가와 매니아들로 구성된 특별 그룹에 의해 작성되었다.형식에 대한 논의와 결정은 이메일로 이뤄졌다.RFC 2083에 열거된 원저자는 다음과 같다.[12]
- 에디터: 토마스 부텔
- 기여 편집자:톰 레인
- 작성자(성별 알파벳 순서로):마크 아들러, 토마스 부텔, 크리스티안 브런첸, 아담 M Costello, Lee Daniel Crocker, Andreas Dilger, Oliver Fromme, Jean-loup Gailly, Chris Herborth, Aleks Jakulin, Neal Kettler, Tom Lane, Alexander Lehmann, Chris Lilley, Dave Martindale, Owen Mortensen, Keith S. Pickens, Robert P. 풀, 글렌 랜더스-페르손, 그렉 로엘로프스, 윌렘 반 샤이크, 가이 샬나트, 폴 슈미트, 팀 웨그너, 제레미 볼
파일 형식
파일 헤더
PNG 파일은 8바이트 서명으로[13] 시작한다(오른쪽 16진수 편집기 이미지 참조):
값(헥스) | 목적 |
---|---|
89 | 8비트 데이터를 지원하지 않는 전송 시스템을 감지하고 텍스트 파일이 PNG로 잘못 해석될 가능성을 줄이도록 하이비트를 설정한다. |
50 4E 47 | ASCII에서는 문자 PNG로, 텍스트 편집기에서 볼 경우 형식을 쉽게 식별할 수 있다. |
0D 0A | 데이터의 DOS-유닉스 라인 변환을 감지하는 DOS 스타일 라인 엔딩(CRLF) |
1A | 명령 유형이 사용되었을 때 DOS에서 파일 표시를 중지하는 바이트 - 파일 끝 문자. |
0A | Unix-DOS 회선 끝 변환을 탐지하는 Unix 스타일 LF(Line Ending) |
파일 내의 "청크"
헤딩 후에 일련의 청크가 나타나며,[14] 각 청크는 이미지에 대한 특정 정보를 전달한다.청크들은 스스로를 비판적이거나 보조적인 존재라고 선언하고, 이해하지 못하는 보조 덩어리와 마주치는 프로그램은 안전하게 무시할 수 있다.컨테이너 형식이나 아미가 IFF와 유사한 개념의 청크 기반 스토리지 계층 구조는 이전 버전과의 호환성을 유지하면서 PNG 형식을 확장할 수 있도록 설계되었으며, 이 파일 구조(서명과 청크가 다른)는 관련 MNG, JNG 및 AP에서 사용된다.NG 형식.
청크는 길이(4바이트,[15] 빅 엔디안), 청크 유형/이름(4바이트[16]), 청크 데이터(4바이트), CRC(순환 중복 코드/체크 합계; 4바이트[15])의 네 부분으로 구성된다.CRC는 청크 유형과 청크 데이터에 대해 계산된 네트워크 바이트 순서 CRC-32이지만 길이는 아니다.
길이 | 청크형 | 청크 데이터 | CRC |
---|---|---|---|
4바이트 | 4바이트 | 길이 바이트 | 4바이트 |
청크 유형에는 대소문자를 구분하는 ASCII 유형/이름이 4글자로 지정되며, FourCC를 비교하십시오.이름에서 다른 글자의 경우(문자의 숫자 값 중 비트 5)는 해독기에 인식하지 못하는 청크의 성질에 대한 정보를 제공하는 비트 필드다.
첫 글자의 경우는 청크가 중요한지 아닌지를 나타낸다.첫 번째 문자가 대문자일 경우 청크는 중요하고, 그렇지 않을 경우 청크는 보조적이다.중요 청크에는 파일을 읽는 데 필요한 정보가 들어 있다.디코더가 인식하지 못하는 중요한 청크를 발견하면 파일 읽기를 중단하거나 사용자에게 적절한 경고를 제공해야 한다.
두 번째 글자의 경우는 청크가 "공용"(특수 목적 공공 청크의 규격 또는 등록부에 있음)인지 또는 "사용"(표준화되지 않음)인지를 나타낸다.대문자는 공개적이고 소문자는 비공개다.이렇게 하면 공용 청크 이름과 개인 청크 이름이 서로 충돌하지 않도록 할 수 있다(두 개인 청크 이름이 충돌할 수 있지만).
세 번째 문자는 PNG 규격에 부합하도록 대문자여야 한다.그것은 미래의 확장을 위해 남겨져 있다.해독자는 소문자 세 번째 문자가 있는 청크를 다른 인식되지 않은 청크와 동일하게 취급해야 한다.
네 번째 글자의 경우는 청크를 인식하지 못하는 편집자가 청크를 복사해도 안전한지 여부를 나타낸다.소문자일 경우 파일의 수정 범위에 관계없이 청크를 안전하게 복사할 수 있다.대문자일 경우, 수정 내용이 중요한 청크에 닿지 않은 경우에만 복사할 수 있다.
임계 청크
디코더는 PNG 파일을 읽고 렌더링하기 위해 중요한 청크를 해석할 수 있어야 한다.
IHDR
첫 번째 청크여야 하며, (이 순서에 따라) 이미지의
월드 와이드 웹 컨소시엄에 명시된 바와 같이 비트 깊이는 "샘플당 비트 수 또는 팔레트 지수당 비트 수([9]픽셀당 비트 수 제외)"로 정의된다.
PLTE
팔레트 포함: 색상 목록.IDAT
여러 IDAT 청크로 분할할 수 있는 이미지를 포함한다.이러한 분할은 파일 크기를 약간 증가시키지만 스트리밍 방식으로 PNG를 생성할 수 있게 한다.IDAT 청크는 압축 알고리즘의 출력 스트림인 실제 영상 데이터를 포함한다.[17]IEND
이미지 끝을 표시한다. IEND 청크의 데이터 필드는 0바이트/비어 있다.[18]
그PLTE
청크는 컬러 타입 3에 필수적이다.컬러 타입 2와 6(알파가 있는 트루컬러와 트루컬러)의 경우 선택사항이며, 컬러 타입 0과 4(알파가 있는 그레이스케일 및 그레이스케일)의 경우 나타나지 않아야 한다.
보조 청크
PNG 파일에 저장할 수 있는 다른 이미지 속성은 감마 값, 배경색, 텍스트 메타데이터 정보 등이다.PNG는 ICC 색상 공간 프로파일 포함을 통한 색상 관리도 지원한다.[19]
bKGD
기본 배경색을 제공한다.독립 실행형 이미지 뷰어(웹 브라우저는 아님, 자세한 내용은 아래 참조)와 같이 더 나은 선택이 없을 때 사용하기 위한 것이다.cHRM
디스플레이 프라이머리와 화이트 포인트의 색도 좌표를 제공한다.dSIG
디지털 서명을 저장하기 위한 것이다.[20]eXIf
Exif 메타데이터 저장.[21]gAMA
감마를 지정한다.gAMA 청크는 4바이트만 포함하고 그 값은 100,000을 곱한 감마 값을 나타낸다. 예를 들어 감마 값 1/3.4는 29411.7647059(1/3.4)**(100,000)로 계산하고 저장용 정수(29412)로 변환된다.[22]hIST
히스토그램 또는 영상의 각 색상의 총량을 저장할 수 있다.iCCP
ICC 색상 프로파일이야iTXt
키워드와 UTF-8 텍스트가 포함되며, 가능한 압축 및 번역에 대한 인코딩이 언어 태그로 표시된다.XMP(Extensible Metadata Platform)는 이 청크를 'XML:com.adobe.xmp' 키워드와 함께 사용한다.pHYs
의도된 픽셀 크기(또는 픽셀 가로 세로 비율)를 보유하고 있으며, pHY에는 총 9바이트의 "단위당 픽셀", "X축"(4바이트), "단위당 픽셀", "Y축"(4바이트), "단위 지정자"(1바이트)가 포함되어 있다.[23]sBIT
(파형 비트)는 소스 데이터의 색 배열을 나타내며, 이 청크는 총 1 ~ 13바이트를 포함한다.[24][25][26]sPLT
전체 색상 범위를 사용할 수 없는 경우 사용할 팔레트를 제안한다.sRGB
표준 sRGB 색 공간이 사용됨을 나타내며, sRGB 청크는 "렌더링 의도"에 사용되는 1바이트만 포함한다(0, 1, 2, 3의 4개 값은 렌더링 의도에 대해 정의됨).[27]sTER
입체 영상의 스테레오 영상 표시기 청크.[28]tEXt
ISO/IEC 8859-1로 나타낼 수 있는 텍스트를 각 청크에 대해 하나의 키 값 쌍으로 저장할 수 있다."키"는 1에서 79자 사이여야 한다.구분 기호는 null 문자다."값"은 최대 허용 청크 크기에서 키워드 및 구분 기호의 길이를 뺀 값을 포함하여 모든 길이가 될 수 있다."키"도 "값"도 null 문자를 포함할 수 없다.선행 또는 후행 공간도 허용되지 않는다.tIME
이미지가 마지막으로 변경된 시간을 저장하십시오.tRNS
투명성 정보를 포함한다.인덱스된 영상의 경우 하나 이상의 팔레트 항목에 대한 알파 채널 값을 저장한다.트루컬러 및 그레이스케일 영상의 경우 완전 투명하다고 간주되는 단일 픽셀 값을 저장한다.zTXt
압축된 텍스트(및 압축 방법 마커)와 동일한 한계값 포함tEXt
.
이 청크의 소문자 첫 글자는 PNG 규격에 필요하지 않음을 나타낸다.일부 청크의 소문자 마지막 글자는 해당 응용 프로그램이 해당 문자를 이해하지 못하더라도 복사가 안전하다는 것을 나타낸다.
픽셀 형식
색종류 | 채널 | 채널당 비트 수 | ||||
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | ||
색인된 | 1 | 1 | 2 | 4 | 8 | |
그레이스케일 | 1 | 1 | 2 | 4 | 8 | 16 |
그레이스케일 및 알파 | 2 | 16 | 32 | |||
트루컬러 | 3 | 24 | 48 | |||
트루컬러와 알파 | 4 | 32 | 64 |
PNG 영상의 픽셀은 팔레트의 샘플 데이터 또는 샘플 데이터 자체의 색인일 수 있는 숫자다.팔레트는 PLTE 청크에 포함된 별도의 테이블이다.단일 픽셀에 대한 샘플 데이터는 1에서 4개의 숫자 사이의 튜플로 구성된다.픽셀 데이터가 팔레트 지수 또는 명시적 샘플 값을 나타내는지 여부에 관계없이 숫자를 채널이라고 하며 영상의 모든 숫자는 동일한 형식으로 인코딩된다.
허용된 형식은 PNG 규격에서 비트 깊이로 언급되는 고정된 비트 수를 사용하여 각 숫자를 부호화되지 않은 정수 값으로 인코딩한다.이는 각 채널이 아닌 각 픽셀의 총 비트 수를 가리키는 데 일반적으로 사용되는 색상 깊이와 같지 않다는 점에 유의하십시오.허용된 비트 깊이는 각 픽셀에 사용된 총 비트 수와 함께 표에 요약되어 있다.
채널 수는 영상이 그레이스케일인지 컬러인지, 알파 채널이 있는지 여부에 따라 달라진다.PNG는 컬러 타입이라고 불리는 다음과 같은 채널의 조합을 허용한다.
0 (0002) | 그레이스케일 |
2 (0102) | 빨간색, 녹색 및 파란색: rgb/참 색상 |
3 (0112) | 인덱스: 색상으로 인덱스를 포함하는 채널 |
4 (1002) | 그레이스케일 및 알파: 각 픽셀의 불투명도 수준 |
6 (1102) | 빨강, 초록, 파랑, 알파 |
색상 유형은 8비트 값으로 지정되지만 낮은 3비트만 사용되며, 그 경우에도 위에 나열된 5가지 조합만 허용된다.색상 유형이 유효하다면 인접 표에 요약된 비트 필드로 간주할 수 있다.
색 타자를 치다 | 이름 | 이진수 | 마스크 | |||
---|---|---|---|---|---|---|
A | C | P | ||||
0 | 그레이스케일 | 0 | 0 | 0 | 0 | |
2 | 트루컬러 | 0 | 0 | 1 | 0 | 색을 칠하다 |
3 | 색인된 | 0 | 0 | 1 | 1 | 색상, 팔레트 |
4 | 그레이스케일 및 알파 | 0 | 1 | 0 | 0 | 알파의 |
6 | 트루컬러와 알파 | 0 | 1 | 1 | 0 | 알파, 색상 |
- 비트 값 1: 이미지 데이터에서 팔레트 인덱스를 저장한다.이것은 비트 값 2와 조합해야만 유효하다.
- 비트 값 2: 이미지 샘플은 3색 인코딩 데이터 채널 3개를 포함하고, 그렇지 않으면 이미지 샘플은 상대 휘도 데이터 인코딩 채널 1개를 포함하고,
- 비트 값 4: 이미지 샘플에는 픽셀의 불투명도에 대한 선형 측정으로 표현되는 알파 채널도 포함되어 있다.이것은 비트 값 1과 함께 사용할 수 없다.
인덱스된 컬러 이미지를 사용하면 항상 채널당 8비트(팔레트 항목당 24비트)의 깊이에서 3색 색상을 저장한다.또한 팔레트 항목에 대한 8비트 알파 값의 선택적 목록이 포함될 수 있으며, 포함되지 않거나 팔레트보다 짧은 경우 나머지 팔레트 항목은 불투명하다고 가정할 수 있다.팔레트는 이미지 비트 깊이가 허용하는 것보다 더 많은 항목을 가질 수 없지만 더 적은 항목을 가질 수 있다(예: 8비트 픽셀의 이미지가 90색만 사용하는 경우 256색 모두에 대해 팔레트 항목이 필요하지 않음).팔레트는 이미지에 있는 모든 픽셀 값에 대한 항목을 포함해야 한다.
이 표준은 색인된 컬러 PNG가 픽셀당 1, 2, 4, 8비트를 가질 수 있도록 허용하고 있으며, 알파 채널이 없는 그레이스케일 영상은 픽셀당 1, 2, 4, 8 또는 16비트를 가질 수 있다.다른 모든 것은 8이나 16의 채널당 비트 깊이를 사용한다.이것이 허용하는 조합은 위의 표에 제시되어 있다.표준은 디코더가 지원되는 모든 색상 형식을 읽을 수 있도록 요구하지만, 많은 이미지 편집자는 그 중 작은 부분집합만 만들 수 있다.
이미지 투명성
PNG는 다양한 투명성 옵션을 제공한다.실제 컬러 및 그레이스케일 영상을 사용하면 단일 픽셀 값을 투명하다고 선언하거나 알파 채널을 추가할 수 있다(사용할 부분 투명도의 백분율 사용 가능).팔레트 영상의 경우 팔레트 항목에 알파 값을 추가할 수 있다.저장된 값의 수는 전체 팔레트 항목 수보다 적을 수 있으며, 이 경우 나머지 항목은 완전히 불투명하다고 간주된다.
이진 투명성을 위한 픽셀 값의 스캔은 픽셀이 의도치 않게 투명해지는 것을 방지하기 위해 색 감소 전에 수행되어야 한다.이는 채널당 16비트(비트) 이미지를 디코딩할 수 있는 시스템(사양 준수에 필요한 경우)에 문제가 될 가능성이 높지만 채널당 8비트(최고 종단 시스템을 제외한 모든 시스템에 대한 표준)에서만 출력된다.
알파 저장소는 "연관"("프리멀티플라이") 또는 "연관되지 않음"이 가능하지만, PNG는 "연관되지 않음"("비프리멀티") 알파에[29] 표준화된 것으로, 이는 이미지가 알파로 인코딩되지 않는다는 것을 의미한다; RGB에 표시된 방출은 픽셀 레벨에서의 방출이 아니다.즉, 오버 오퍼레이션은 RGB 배출량을 알파에 곱하게 되며, 방출과 폐색을 제대로 나타낼 수 없다.
압축
PNG는 2단계 압축 프로세스를 사용한다.
- 사전 검색: 필터링(필터링)
- 압축: 감압
PNG는 LZ77과 허프만 코딩의 조합이 포함된 비특허 무손실 데이터 압축 알고리즘인 DEFLATE를 사용한다.zlib와 같이 허용허가를 받은 DEFLATE 구현은 널리 이용 가능하다.
JPEG와 같이 손실 압축이 있는 형식에 비해 평균 지연 처리보다 높은 압축 설정을 선택하지만 파일 크기가 현저히 작지 않은 경우가 많다.
필터링
DEFLATE를 적용하기 전에 예측 방법을 통해 데이터를 변환한다. 즉, 전체 이미지에는 단일 필터 방법을 사용하며, 각 이미지 라인에 대해서는 데이터를 보다 효율적으로 압축할 수 있도록 변환하기 위해 필터 유형을 선택한다.[30]인라인 압축을 활성화하기 위해 스캔라인에 사용되는 필터 유형을 스캔라인 앞에 추가한다.
현재 PNG 사양(표기된 방법 0)에는 필터 방법이 하나만 있으므로, 실제로는 각 라인에 적용할 필터 유형만 선택할 수 있다.이 방법의 경우 필터는 이전 인접 픽셀의 값을 기준으로 각 픽셀의 값을 예측하고 DPCM에서와 같이 실제 값에서 픽셀의 예측 색상을 뺀다.이러한 방식으로 필터링된 이미지 라인은 특히 위의 라인과 유사한 경우 예측과의 차이가 가능한 모든 이미지 값에 걸쳐 확산되기보다는 일반적으로 0 주위에 군집화되기 때문에 원시 이미지 라인보다 압축성이 더 높은 경우가 많다.DEFLATE는 이미지가 2D 엔터티라는 것을 이해하지 못하고 대신 이미지 데이터를 바이트 스트림으로만 보기 때문에 이것은 별도의 행을 연관시킬 때 특히 중요하다.
필터 방법 0에는 5개의 필터 유형이 있다. 각 유형은 픽셀의 해당 바이트를 기준으로 왼쪽(A), 위쪽(B), 위쪽과 왼쪽(C) 또는 그 일부 조합에 따라 각 바이트의 값을 예측하고 예측 값과 실제 값의 차이를 인코딩한다.값. 필터는 픽셀이 아닌 바이트 값에 적용된다. 픽셀 값은 1바이트 또는 2바이트 또는 바이트당 여러 개의 값일 수 있지만 결코 바이트 경계를 넘지는 않는다.필터 유형은 다음과 같다.[31]
타이프 바이트 | 필터명 | 예측값 |
---|---|---|
0 | 없음 | 0(원시 바이트 값이 변경되지 않은 상태로 통과하도록 함) |
1 | 후보선수 | 바이트 A(왼쪽) |
2 | 업 | B바이트(위) |
3 | 평균 | 반올림된 A 및 B 바이트의 평균 |
4 | 파에스 | A, B 또는 C 중 p = A + B - C에 가장 가까운 것 |
Paeth 필터는 Alan W. Paeth의 알고리즘을 기반으로 한다.[32]무손실 JPEG에 사용되는 DPCM 버전과 1×2, 2×1 또는 (Paeth 예측기의 경우) 2×2 창 및 Haar 파장을 사용하는 이산 파장 변환과 비교해 보십시오.
필터 유형을 라인별로 적응적으로 선택함으로써 압축이 더욱 개선된다.이러한 개선과 PNG 쓰기 소프트웨어에서 일반적으로 사용하는 경험적 접근법은 포맷을 만드는 동안 많은 이미지에서 방법을 테스트한 Lee Daniel Crocker에 의해 만들어졌다.[33] 필터 선택은 아래에서 논의한 바와 같이 파일 크기 최적화의 구성요소다.
인터레이싱을 사용할 경우 인터레이싱의 각 단계를 개별적으로 필터링하여 각 스테이지가 수신될 때 이미지를 점진적으로 렌더링할 수 있지만 인터레이싱은 일반적으로 압축을 덜 효과적으로 만든다.
인터레이싱
PNG는 옵션인 2차원 7패스 인터레이싱 방식인 Adam7 알고리즘을 제공한다.이는 GIF의 1차원, 4패스 방식보다 정교하며 특히 바이큐빅 보간과 같은 보간 알고리즘을 사용할 경우 전송 초기에 보다 선명한 저해상도 영상을 볼 수 있다.[34]
그러나 7-통과 체계는 단순한 체계보다 데이터의 압축성을 감소시키는 경향이 있다.
애니메이션
PNG 자체는 애니메이션을 지원하지 않는다.MNG는 PNG의 확장이다; 그것은 PNG 그룹의 멤버들에 의해 설계되었다.MNG는 PNG의 기본 구조와 청크를 공유하지만 훨씬 복잡하고 파일 서명이 달라서 표준 PNG 디코더와 호환이 안 되는 자동 렌더링으로 대부분의 웹 브라우저나 애플리케이션에서 MNG가 떨어뜨리는 지원이나 지원이 거의 없다.
MNG의 복잡성은 모질라 재단의 개발자들에 의한 APNG의 제안으로 이어졌다.그것은 PNG를 기반으로 하며 애니메이션을 지원하며 MNG보다 단순하다. APNG는 APNG를 지원하지 않는 PNG 디코더에 대해 단일 이미지 디스플레이로 대체한다.오늘날 APNG 형식은 현재 모든 주요 웹 브라우저에서 광범위하게 지원되고 있다.[35]엔진이 블링크(Blink)로 변경된 이후 Firefox 3.0 이상, Pale Moon(모든 버전), 최신 버전의 Opera 지원 APNG에서 APNG를 지원한다.iOS 8의 Safari 최신 버전과 OS X 요세미티용 Safari 8은 APNG를 지원하는 WebKit 엔진을 사용한다.[36]크롬 59.0은 APNG 지원을[37][38] 추가했고 구글 크롬이 그 뒤를 이었다.마이크로소프트 엣지는 이제 새로운 크롬 기반 엔진으로 APNG를 지원한다.
PNG 그룹은 2007년 4월에 APNG를 수용하지 않기로 결정했다.[39] ANG, aNIM/mPNG, "PNG in GIF"와 그 하위집합 "RGBA in GIF"[40] 등 몇 가지 대안이 논의되고 있었다.그러나 현재 APNG만이 모든 주요 웹 브라우저의 지원을 받고 있다.[35]
예
89 50 4E 47 0D 0A 1A 0A PNG 서명 | IHDR 이미지 헤더 | IDAT 이미지 데이터 | IEND 이미지 끝 |
육각 | 캐릭터로 |
---|---|
89 50 4E 47 0D 0A 1A 0A00 00 00 0D 49 48 44 52 | .PNG........IHDR |
오프셋을 청크로 | 16진수 값 | 십진수 값 | 텍스트 | 의미 |
---|---|---|---|---|
0 | 0x0D | 13 | IHDR 청크에는 13바이트의 컨텐츠가 있음 | |
4 | 0x49484452 | IHDR | 헤더 청크 식별 | |
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(길이 제외) |
오프셋을 청크로 | 16진수 값 | 의미 |
---|---|---|
0 | 0x0C | IDAT 청크에는 12바이트의 컨텐츠가 있음 |
4 | 0x49444154 | 데이터 청크 식별 |
8 | 0x08 | 256바이트 창을[41] 사용한 DEFLAT 압축 방법 |
9 | 0xD7 | ZLIB FCHECK 값, 사전 사용 없음, 최대 압축 알고리즘[41] |
10 | 0x63F8CFC00000 | 정적 Huffman 코드를 사용하여 0x00 0xFF[42] 0x00으로 디코딩되는 압축 DEFLATE 블록 |
16 | 0x03010100 | ZLIB 검사 값: 압축되지 않은 데이터의[41] Adler32 체크섬 |
20 | 0x18DD8DB0 | 청크 유형 및 내용물의 CRC(길이 제외) |
16진수 편집기의 방식으로 표시되며, 왼쪽 바이트 값은 16진수 형식으로 표시되고 오른쪽은 ISO-8859-1의 동등한 문자로 인식되지 않고 제어 문자가 마침표로 대체되었다.또한 PNG 시그니처와 개별 청크는 색상으로 표시된다.이들은 사람이 읽을 수 있는 유형 이름(이 예에서 PNG, IHDR, IDAT 및 IEND) 때문에 식별하기 쉽다는 점에 유의하십시오.
이점
이 국제 표준을 사용하는 이유는 다음과 같다.
- 휴대성:전송은 소프트웨어 및 하드웨어 플랫폼과 독립적이다.
- 완전성: 참색, 색인 색, 그리스케일 이미지를 나타낼 수 있다.
- 직렬로 코딩 및 디코딩: 직렬로 데이터 스트림을 생성하고 읽을 수 있게 하는 것, 즉 데이터 스트림의 포맷은 직렬 통신을 통해 순간의 영상 생성과 시각화에 사용된다.
- 점진적 표현: 초기 전체 이미지의 근사치인 데이터 흐름을 전송할 수 있고 데이터 흐름이 수신될 때 점진적으로 개선된다.
- 전송 오류에 대한 건전성: 데이터 스트림의 전송 오류를 올바르게 감지한다.
- 무손실: 손실 없음: 필터링 및 압축은 모든 정보를 보존한다.
- 효율성: 모든 점진적인 이미지 표시, 압축 및 필터링은 효율적인 디코딩 및 표시를 추구한다.
- 압축: 이미지를 효율적이고 일관되게 압축할 수 있다.
- 용이성: 표준의 구현은 쉽다.
- 호환성: 표준을 따르는 모든 PNG 디코더는 모든 PNG 데이터 스트림을 읽을 수 있다.
- 유연성: 이전 포인트에 영향을 주지 않고 미래의 확장 및 개인 추가 허용.
- 법적 제약의 자유: 사용되는 알고리즘은 자유롭고 접근 가능하다.
다른 파일 형식과의 비교
그래픽 교환 형식(GIF)
- 작은 이미지에서 GIF는 PNG보다 더 큰 압축을 달성할 수 있다(아래 파일 크기 섹션 참조).
- 위의 경우를 제외하고 대부분의 이미지에서 GIF 파일은 인덱싱된 PNG 이미지보다 큰 크기를 가진다.
- PNG는 알파 채널 투명성을 포함하여 GIF보다 훨씬 더 광범위한 투명성 옵션을 제공한다.
- GIF는 8비트 인덱싱 컬러로 한정된 반면, PNG는 24비트(채널당 8비트)와 48비트(채널당 16비트) 트루컬러 등 훨씬 광범위한 색상 깊이를 부여해 컬러 정밀도를 높이고 페이드도 부드러워진다.[43]알파 채널을 추가하면 픽셀당 최대 64비트(압축 전)까지 가능하다.
- 이미지를 PNG 형식에서 GIF로 변환할 때 PNG 이미지의 색상이 256색 이상일 경우 포스터화로 인해 화질이 저하될 수 있다.
- GIF는 본질적으로 애니메이션 이미지를 지원한다.PNG는 비공식 확장을 통해서만 애니메이션을 지원한다(위 애니메이션 섹션 참조).
PNG 이미지는 오래된 브라우저에서 덜 광범위하게 지원된다.특히 IE6는 PNG에 대한 지원이 제한적이다.[44]
JPEG
JPEG(Joint Photography Experts Group) 형식은 사진 영상(및 사진 유사)을 위해 특별히 설계된 손실성 인코딩 방법을 사용하기 때문에 PNG보다 작은 파일을 생성할 수 있는데, 이는 일반적으로 부드러운 저대비 전환과 소음 또는 이와 유사한 불규칙한 구조가 지배적이다.그러한 영상에 고화질 JPEG 대신 PNG를 사용하면 파일 크기가 크게 증가하고 화질은 거의 증가하지 않을 것이다.이에 비해 텍스트, 라인 아트 또는 그래픽이 포함된 영상(전환이 날카롭고 솔리드 컬러의 넓은 영역)을 저장할 때 PNG 형식은 JPEG보다 영상 데이터를 더 많이 압축할 수 있다.또한, PNG는 무손실인 반면, JPEG는 고대비 지역을 중심으로 시각적 유물을 생산한다.(이러한 아티팩트는 JPG 압축에 사용되는 설정에 따라 달라진다. 저품질 [고압축] 설정을 사용하면 상당히 눈에 띌 수 있다.)이미지가 날카로운 전환과 사진 부분을 모두 포함하는 경우, 두 효과 사이에서 선택해야 한다.JPEG는 투명성을 지원하지 않는다.
JPEG의 손실 압축도 세대 손실에 시달리며, 이미지를 다시 저장하기 위해 이미지를 디코딩하고 다시 인코딩을 반복하면 매번 정보가 손실되어 이미지가 저하된다.PNG는 무손실이기 때문에 편집할 영상을 저장하기에 적합하다.PNG는 사진 이미지를 압축할 때 상당히 효율적이지만, 예를 들어 사진 이미지, 무손실 WebP 및 Adobe DNG(디지털 음극)를 위해 특별히 설계된 무손실 압축 형식이 있다.그러나 이러한 형식은 널리 지원되지 않거나 독점적이다.영상을 무손실 저장하여 배포 전용 JPEG 형식으로 변환하여 생성 손실이 발생하지 않도록 한다.
PNG 규격에는 디지털 카메라와 같은 소스의 Exif 이미지 데이터를 내장하는 표준이 명시되어 있지 않지만, PNG에 EXIF 데이터를 내장하기 위한 선호 방법은 중요하지 않은 보조 청크 라벨을 사용하는 것이다.eXIf
.[45]
초기 웹 브라우저는 PNG 이미지를 지원하지 않았다; JPEG와 GIF가 주요 이미지 형식이었다.JPEG는 GIF의 색상 깊이가 제한되어 있어 웹 페이지의 그라데이션이 포함된 영상을 내보낼 때 일반적으로 사용되었다.그러나 JPEG 압축은 그라데이션이 약간 흐려지게 한다.PNG 형식은 파일 크기를 작게 유지하면서 주어진 비트 깊이에 대해 가능한 정확하게 그라데이션이 재현된다.PNG는 포맷에 대한 웹 브라우저 지원이 개선됨에 따라 소형 그라데이션 영상에 최적의 선택이 되었다.CSS를 사용하여 그라데이션이 생성될 수 있기 때문에 현대 브라우저에서 그라데이션 표시에는 이미지가 전혀 필요하지 않다.
JPEG-LS
JPEG-LS는 위에서 논의한 다른 손실 JPEG 형식에 비해 널리 알려지고 지원되지는 않지만 공동 사진 전문가 그룹에 의한 이미지 형식이다.PNG와 직접 비교 가능하며,[clarification needed] 테스트 영상 표준 세트를 가지고 있다.[46]테스트 영상(JPEG-LS 적합성 테스트 세트와 무관)의 표준 세트인 Waterloo 레퍼토리 ColorSet에서 JPEG-LS는 일반적으로 PNG보다 10–15% 더 우수한 성능을 보였지만, 일부 이미지에서는 PNG가 50–[47]75%의 순서로 상당히 더 우수한 성능을 보인다.따라서 이 두 가지 형식이 모두 옵션이고 파일 크기가 중요한 기준이라면 이미지에 따라 둘 다 고려해야 한다.
TIFF
TIFF(Tagged Image File Format)는 매우 광범위한 옵션을 통합한 형식이다.이는 TIFF를 전문적인 이미지 편집 애플리케이션 간의 교환을 위한 일반적인 형식으로 유용하게 만들지만, 그것은 애플리케이션에 대한 지원을 훨씬 더 큰 작업으로 만들어 이미지 조작과 관련이 없는 애플리케이션(예: 웹 브라우저)에서는 거의 지원하지 않는다.또한 높은 수준의 확장성은 대부분의 애플리케이션이 가능한 기능의 하위 집합만 제공하여 잠재적으로 사용자 혼란과 호환성 문제를 야기한다는 것을 의미한다.
TIFF와 함께 사용되는 가장 일반적인 범용 무손실 압축 알고리즘은 렘펠-지브-웰치(LZW)이다.GIF에서도 사용되는 이 압축 기술은 2003년까지 특허에 의해 다루어졌다.TIFF는 PNG가 사용하는 압축 알고리즘(즉, 압축 태그 000816 'Adobe-style')도 지원하며 애플리케이션별 중간 사용 및 지원도 지원한다.TIFF는 또한 PNG의 압축 알고리즘보다 담즙 이미지(예: 팩스 또는 흑백 텍스트)를 더 잘 압축할 수 있는 CCITT Group IV와 같은 특수 목적의 무손실 압축 알고리즘을 제공한다.
PNG는 비사전적 알파만[29] 지원하는 반면 TIFF는 "관련된"(사전적) 알파도 지원한다.
소프트웨어 지원
PNG 형식의 공식적인 참조 구현은 프로그래밍 라이브러리 libpng이다.[48]그것은 허용 가능한 자유 소프트웨어 라이센스의 조건에 따라 무료 소프트웨어로 출판된다.따라서 보통 무료 운영 체제에서 중요한 시스템 라이브러리로 발견된다.
PNG를 위한 비트맵 그래픽 편집기 지원
PNG 형식은 Adobe Photoshop, Corel의 Photo-Paint and Painte Shop Pro, KIMP, GraphicConverter, 헬리콘 필터, ImageMagick, Inkscape, IrfanView, Pixel 이미지 편집기, Paint 등 그래픽 프로그램에서 널리 지원되고 있다.NET와 Xara Photo & Graphic Designer 그리고 많은 다른 것들.PNG를 지원하는 인기 운영체제와 함께 번들로 제공되는 프로그램 중에는 마이크로소프트의 페인트와 애플의 포토/iPhoto 및 Preview가 있으며, KIMP는 인기 있는 리눅스 배포판에도 번들로 제공되는 경우가 많다.
Adobe Firewalls(이전의 Macromedia)는 PNG를 기본 파일 형식으로 사용하여 다른 이미지 편집기 및 미리보기 유틸리티가 평평한 이미지를 볼 수 있도록 한다.그러나 기본적으로 불꽃놀이는 레이어, 애니메이션, 벡터 데이터, 텍스트 및 효과에 대한 메타데이터도 저장한다.이러한 파일은 직접 배포해서는 안 된다.대신 불꽃놀이는 웹페이지 등에 사용할 여분의 메타데이터 없이 최적화된 PNG로 이미지를 내보낼 수 있다.[citation needed]
PNG를 위한 웹 브라우저 지원
PNG 지원은 1997년, Internet Explorer 4.0b1(NT 전용 32비트), 넷스케이프 4.04에 처음 등장했다.[49]
자유소프트웨어재단과[50] 월드와이드웹컨소시엄(W3C),[51] gif2png 등의 [52]도구, 번 올 GIF 등의 캠페인에도 불구하고 웹사이트의 PNG 채택은 특히 투명성에 관한 인터넷 익스플로러에서의 늦은 지원과 버기 지원으로 인해 상당히 느렸다.[53][54]
PNG 호환 브라우저에는 다음이 포함된다.Apple Safari, Google Chrome, Mozilla Firefox, Opera, Camino, Internet Explorer 7(여전히 수많은 문제),[55] Internet Explorer 8(여전히 일부 문제), Internet Explorer 9 및 기타 여러 가지 문제.전체 비교는 웹 브라우저 비교(이미지 형식 지원)를 참조하십시오.
특히 9.0(2011년 출시) 이하의 Internet Explorer(윈도우) 버전에는 PNG 이미지를 올바르게 렌더링하지 못하는 수많은 문제가 있다.[55]
- 대형 PNG 덩어리에 4.0 충돌.[56]
- 4.0에는 .png 파일을 볼 수 있는 기능이 없지만 레지스트리 수정 사항이 있다.[57][55]
- 5.0과 5.01은 OBJECT 지원을 중단했다.[58]
- 5.01은 Windows 98 아래에 검정(또는 진한 회색) 배경의 팔레트 이미지를 인쇄하며, 때로는 색상이 근본적으로 변경되기도 한다.[59]
- 6.0은 크기가 4097 또는 4098바이트인 PNG 영상을 표시하지 않는다.[60]
- 6.0은 하나 이상의 제로 길이 IDAT 청크를 포함하는 PNG 파일을 열 수 없다.이 문제는 처음 보안 업데이트 947864(MS08-024)에서 수정되었다.자세한 내용은 Microsoft 기술 자료: 947864 MS08-024: Internet Explorer용 누적 보안 업데이트를 참조하십시오.[61]
- 6.0은 PNG 표시 능력을 완전히 상실하는 경우도 있지만, 여러 가지 수정 사항이 있다.[62]
- 6.0 이하에는 알파 채널 투명성 지원 기능이 파손되었다(대신 기본 배경색이 표시됨).[63][64][65]
- 7.0 이하에서는 8비트 알파 투명도 AND 요소 불투명도(CSS – 필터:부분적으로 투명한 부분을 검은색으로 채우지 않고 알파(오패시티=xx)[66]
- 8.0 이하의 감마선 지지대가 일정하지 않거나 파손됨.[55]
- 8.0 이하에서는 컬러 배색 지원 기능이 없다.[55]
PNG 아이콘을 위한 운영 체제 지원
PNG 아이콘은 적어도 1999년부터 GNOME과 같은 데스크톱 환경에서 Linux의 대부분의 배포에서 지원되어 왔다.[67] 2006년에는 Windows Vista에서 Microsoft Windows의 PNG 아이콘 지원이 도입되었다.[68]PNG 아이콘은 AmigaOS 4, AROS, macOS, iOS, MorphOS에서도 지원된다.게다가, 안드로이드는 PNG를 광범위하게 사용한다.
파일 크기 및 최적화 소프트웨어
PNG 파일 크기는 인코딩 및 압축 방법에 따라 크게 달라질 수 있다. 이는 PNG: The Frinal Guide에서 논의되고 많은 팁이 제공된다.[47]
GIF와 비교했을 때
유효 압축기에 의해 압축된 동일한 정보(256색, 보조 청크/메타데이터 없음)의 PNG 파일은 GIF 이미지보다 일반적으로 작다.파일 및 압축기에 따라 PNG는 다소 작은 크기(10%)에서 현저하게 작은 크기(50%)까지 범위가 넓을 수 있지만 큰 이미지의 경우 상당히[47] 큰 크기는 드물다.이는 GIF의 LZW에 비해 PNG의 DEFLATE의 성능으로, PNG의 예측 필터의 추가된 프리압축 레이어는 파일을 더욱 압축하기 위해 2차원 영상 구조를 고려하기 때문에, 필터링된 데이터가 픽셀 간의 차이를 부호화하기 때문에, 그것들은 전체로 확산되기 보다는 0에 가깝게 클러스터화되는 경향이 있다.가능한 모든 값, 따라서 DEFLATE에 의해 더 쉽게 압축된다.그러나 Adobe Photoshop, CorelDROW, MS Paint의 일부 버전은 낮은 PNG 압축을 제공하여 GIF가 더 효율적이라는 인상을 준다.[47]
파일 크기 요인
PNG 파일은 여러 가지 요인으로 인해 크기가 다양하다.
- 색의 깊이
- 색의 깊이는 픽셀당 1~64비트까지 다양하다.
- 보조 덩어리
- PNG는 메타데이터를 지원한다. 이것은 웹사이트에서처럼 편집에 유용할 수 있지만 보기에 불필요하다.
- 서로 교차하는
- Adam7 알고리즘의 각 패스는 별도로 필터링되므로 파일 크기를 늘릴 수 있다.[47]
- 여과하다
- 압축 전 단계로서 각 선은 예측 필터에 의해 필터링되어 선마다 변할 수 있다.궁극적인 DEFLAT 단계가 전체 이미지의 필터링된 데이터에서 작동하므로, 이 행을 최적화할 수 없다. 따라서 각 행에 대한 필터 선택은 휴리스틱스가 존재하지만 잠재적으로 매우 가변적이다.[note 1]
- 압축
- 추가 계산을 통해 DEFLAT 컴프레서는 더 작은 파일을 생성할 수 있다.
따라서 높은 색 깊이, 최대 메타데이터(색 공간 정보와 디스플레이에 영향을 주지 않는 정보 포함), 인터레이싱 및 압축 속도 사이의 파일화 트레이드오프가 있으며, 이 모든 것은 색 깊이가 낮거나, 보조 청크가 적거나, 상호레이싱이 없으며, 튜닝되었지만 계산적으로 집약적인 f를 산출한다.일터링과 압축다른 목적으로는 최대 파일이 보관 및 편집에 가장 적합할 수 있는 반면, 벗겨진 파일은 웹사이트에서 사용하는 것이 가장 적합할 수 있으며, 이와 유사하게 파일을 반복적으로 편집하고 저장할 때는 빠르지만 낮은 압축이 선호되는 반면, 파일이 안정적일 때는 느리지만 높은 압축이 선호되는 경우: 아카이브가 선호되는 경우.g 또는 게시.인터레이싱은 큰 파일의 초기 렌더링 속도를 획기적으로 향상시키지만(대기 시간 단축), 특히 작은 파일의 경우 파일 크기(처리량 감소)[47]가 거의 증가하지 않을 수 있다.
손실 PNG 압축
PNG는 무손실 형식이지만 PNG 인코더는 이미지 데이터를 무손실 방식으로 사전 처리해 PNG 압축을 개선할 수 있다.예를 들어 트루컬러 PNG를 256색으로 정량화하면 파일 크기를 줄일 수 있는 인덱스컬러 유형을 사용할 수 있다.[69]
이미지 편집 소프트웨어
일부 프로그램은 PNG 파일을 저장할 때 다른 프로그램보다 효율적이며, 이는 프로그램에 의해 사용되는 PNG 압축의 구현과 관련이 있다.
많은 그래픽 프로그램(애플의 프리뷰 소프트웨어 등)은 웹 보기에 일반적으로 필요 없는 대량의 메타데이터와 색상 수정 데이터를 PNG에 저장한다.어도비 불꽃놀이의 최적화되지 않은 PNG 파일도 지원되는 편집기에서 이미지를 편집할 수 있는 옵션이 포함되어 있기 때문에 악명이 높다.또한 CorelDROW(최소 버전 11)는 Internet Explorer(인터넷 익스플로러 6~8 버전)에서 열 수 없는 PNG를 생산하기도 한다.
Adobe Photoshop의 PNG 파일 성능은 Save For Web 기능(PNG/8의 명시적 사용도 허용)을 사용할 때 CS Suite에서 향상되었다.
어도비의 불꽃놀이는 기본적으로 많은 프로그램보다 더 큰 PNG 파일을 저장한다.이것은 그것의 저장 형식의 역학에서 유래한다: 불꽃놀이의 저장 기능에 의해 생성된 이미지들은 완전한 레이어와 벡터 정보를 포함하는 큰 개인 청크를 포함한다.이것은 추가적인 무손실 편집을 허용한다.엑스포트 옵션으로 저장하면, 불꽃놀이의 PNG는 다른 이미지 편집자들이 제작한 것과 경쟁적이지만, 더 이상 평평한 비트맵 이외에는 편집이 불가능하다.불꽃놀이는 크기에 최적화된 벡터 편집 가능한 PNG를 저장할 수 없다.
불량 PNG 압축기의 다른 주목할 만한 예는 다음과 같다.
- Windows XP용 Microsoft 그림판
- Microsoft Picture It!포토 프리미엄 9
압축 불량으로 인해 PNG 파일 크기가 증가하지만 파일의 이미지 품질이나 다른 프로그램과의 호환성에 영향을 미치지는 않는다.
참색 이미지의 색 깊이를 8비트 팔레트로 줄이면(GIF에서처럼) 결과 이미지 데이터는 일반적으로 훨씬 더 작아진다.따라서 PNG는 색상 감소 버전을 유사한 크기의 팔레트 파일로 저장할 수 있지만, 실제 색상 PNG는 일반적으로 색 감소 GIF보다 크다.반대로 일부 도구는 이미지를 PNG로 저장할 때 원본 데이터가 8비트 색상만 사용하더라도 트루 컬러로 자동 저장하므로 파일이 불필요하게 부풀어 오른다.[47]두 가지 요인 모두 PNG 파일이 등가 GIF 파일보다 크다는 오해를 불러일으킬 수 있다.
도구 최적화
PNG 파일을 최적화하기 위해 다양한 도구를 사용할 수 있으며, 다음과 같은 방법으로 이를 수행할 수 있다.
- (iii) 보조 청크 제거,
- 색상 깊이 감소:
- 이미지가 256색 이하일 경우 RGB 대신 팔레트를 사용하십시오.
- 이미지에 2, 4, 16가지 색상이 있는 경우 더 작은 팔레트를 사용하십시오.
- (iii) 원본 영상의 일부 데이터를 손실 처리하고,
- 라인별 필터 선택 최적화
- DEFLATE 압축 최적화.
도구 목록
- pngcrush는 인기 있는 png 옵티마이저 중 가장 오래된 것이다.필터 선택과 압축 인수에 대해 여러 번의 시행을 허용하고 최종적으로 가장 작은 인수를 선택한다.이 작업 모델은 거의 모든 png 옵티마이저에 사용된다.
- Advpng 및 AdvancedCOMP 패키지의 유사한 advdef 유틸리티는 PNG IDAT를 다시 압축한다.선택한 압축 수준에 따라 서로 다른 DEFLAT 구현이 적용되며, 속도 및 파일 크기 간 트레이딩: 레벨 1, 레벨 2에서 zlib, 레벨 2, 7-zip의 LZMA DEFLATE, 레벨 4에서 zopfli.
- pngout은 색감축/필터링의 모든 설비를 유지하면서 작가 자신의 디플레이터(저자의 zip 유틸리티, kzip에 추가)로 만들어졌다.그러나 pngout은 한 번의 실행으로 필터에 여러 번의 시행을 사용하는 것을 허용하지 않는다.상용 GUI 버전, pngoutwin 또는 포장지와 함께 사용해 시연을 자동화하거나 필터를 일렬로 유지하면서 자체 디플레이터를 사용하여 다시 압축하는 것이 좋다.[note 2]
- zopflipng은 또한 자칭 디플레이터인 zopfli로 만들어졌다.Pngcrush가 가진 모든 최적화 기능(실험 자동화 포함)을 갖추고 있으며, 매우 우수하지만 느린 디플레이터를 제공한다.
이들의 특징에 대한 간단한 비교가 아래에 열거되어 있다.
옵티마이저 | 청크 제거 | 색감소 | 필터링 | 필터 재사용[note 3] | 한 번의 실행으로 필터에 대한 여러 번의 시행 | 디플레이터[note 4] |
---|---|---|---|---|---|---|
조언하다 | 네 | 아니오[note 5] | 0 | 아니요. | 해당[note 6] 없음 | (iii) |
어드바이저어드바이저 | 아니요. | 아니요. | 이전 필터 세트 재사용 | 항상 | 해당 없음 | (iii) |
펑크러쉬 | 네 | 네 | 0-4 또는 적응형 | 아니요. | 네 | 즈립 |
핀아웃시키다 | 네 | 네 | 0-4 또는 적응형 | 네[note 2] | 아니요. | 지퍼를 채우다 |
Zopflipng | 네 | 네 | 0–4 또는 2개의 다른 알고리즘 또는 짐승 같은 방법으로 적응 | 네 | 네 | 조플리 |
zopflipng를 사용하기 전에 png 최적화를 수행하는 좋은 방법은 필터(부속 청크를 제거하고 필터)를 최적화하는 툴과 DEFLATE를 최적화하는 툴의 두 가지 조합을 사용하는 것이다.pngout은 두 가지 모두를 제공하지만, 단 한 번의 실행으로 한 가지 유형의 필터만 지정할 수 있으므로, 포장 도구와 함께 사용하거나 pngcrush와 조합하여 사용할 수 있으며,[note 2] advdef와 같이 re-defilator 역할을 한다.
보조 청크 제거
보조 청크를 제거하는 경우 대부분의 PNG 최적화 도구는 PNG 파일(감마, 화이트 밸런스, ICC 색상 프로파일, 표준 RGB 색상 프로파일)에서 모든 색상 보정 데이터를 제거할 수 있는 기능을 가지고 있다.이로 인해 파일 크기가 훨씬 작아지는 경우가 많다.예를 들어, 다음과 같은 명령줄 옵션은 pngcrush를 사용하여 이를 달성할 수 있다.
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png
필터 최적화
pngcrush, pngout, zopflipng은 모두 필터 유형 0~4(모든 라인에 동일한 필터 유형을 사용) 중 하나를 전역적으로 적용하거나 각 라인에서 적응 알고리즘을 사용하여 필터 유형 0-4 중 하나를 선택하는 "입력 필터"(문자 5)를 사용하여 옵션을 제공한다.Zopflipng는 필터링 최적화를 시도하는 무차별 검색을 포함하여 3가지 적응 방법을 제공한다.[note 7]
pngout과 zopflipng는 입력 이미지에 있는 라인별 필터 세트를 보존/보존하는[note 2][note 8] 옵션을 제공한다.
pngcrush와 zopflipng는 한 번의 실행으로 다른 필터 전략을 시도하고 최고의 필터를 선택할 수 있는 옵션을 제공한다.pngout의 프리웨어 커맨드 라인 버전은 이를 제공하지 않지만, 상용 버전인 pngoutwin은 이를 제공한다.[note 9]
감압 최적화
Zopfli와 LZMA SDK는 성능 비용으로 zlib 참조 구현보다 높은 압축 비율을 생산할 수 있는 DEFLATE 구현을 제공한다.전진COMP의advpng
그리고advdef
이러한 라이브러리 중 하나를 사용하여 PNG 파일을 다시 압축할 수 있다.또한 PNGOUT는 자체 소유의 DEFLATE 구현을 포함하고 있다.
advpng
필터를 적용할 수 있는 옵션이 없으며 항상 필터 0을 글로벌하게 사용(이미지 데이터를 필터링하지 않은 상태로 표시)하므로 이미지가 필터링을 통해 큰 이점을 얻는 경우에는 사용하지 마십시오.대조적으로,advdef
동일한 패키지에서 PNG 구조를 다루지 않고 기존 필터 설정을 유지하는 리 디플레이터 역할만 한다.
아이콘 최적화
Windows Vista(윈도우 비스타) 이상 버전용 아이콘은 PNG 하위 이미지를 포함할 수 있으므로 최적화를 적용할 수도 있다.적어도 하나의 아이콘 편집기인 픽셀포머는 ICO 파일을 저장하면서 특수 최적화 패스를 수행할 수 있어 크기를 줄일 수 있다.FileOptimizer(위에서 언급)도 ICO 파일을 처리할 수 있다.
또한 MacOS용 아이콘은 PNG 하위 이미지를 포함할 수 있지만 사용할 수 있는 도구가 없다.[citation needed]
참고 항목
- 다음을 포함한 컴퓨터 그래픽:
- 이미지 편집
- 이미지 파일 형식
- 관련 그래픽 파일 형식
- APNG 애니메이션 PNG
- JPEG 네트워크 그래픽(JNG)
- 다중 이미지 네트워크 그래픽(MNG)
- 유사한 파일 형식
- 확장 가능한 벡터 그래픽스
- WebP
- 이르판뷰
메모들
- ^ 필터링은 데이터와의 유사성을 증가시키기 위해 사용되며, 따라서 압축비가 증가시킨다.그러나 이론적으로 유사성에 대한 공식도 없고 유사성과 압축기 사이의 절대적인 관계도 없기 때문에 압축을 하지 않으면 한 필터 세트가 다른 필터 세트보다 낫다고 말할 수 없다.
- ^ a b c d 이전 필터 세트를 재사용하려면 pngout -f6 사용
- ^ 그러한 기능을 제공하는 도구는 PNG 파일에 대한 순수한 다시 정의자의 역할을 할 수 있다.
- ^ zlib, 참조 감압 구현, 압축은 최대 레벨에서도 차선책이다.7-zip 및 pngout의 zip 형식 Zopfli를 참조하십시오.
- ^ advpng는 색상 축소를 지원하지 않을 뿐만 아니라 색상 공간이 줄어든 이미지에서도 실패한다.
- ^ Advpng는 필터 0을 전체적으로만 적용할 수 있으므로 예, 아니오가 아닌 N/A
- ^ [pngcrush pngout] -f 또는 zopflipng --필터
- ^ zopflipng --sng=p
- ^ Pngoutwin의 최적화 설정 대화상자는 사용자에게 필터 전략의 선택을 제공한다.
참조
- ^ a b c "ISO/IEC 15948:2004 – Information technology – Computer graphics and image processing – Portable Network Graphics (PNG): Functional specification". International Organization for Standardization. 3 March 2004. Retrieved 19 February 2011.
- ^ a b Roelofs, Greg (29 May 2010). "History of PNG". libpng. Retrieved 20 October 2010.
- ^ W3C 2003, 1 범위.
- ^ "Definition of PNG noun from the Oxford Advanced Learner's Dictionary". Oxford Learner's Dictionaries. Retrieved 21 January 2018.
- ^ Roelofs, Greg. "Web Review: PNG's NOT GIF!". people.apache.org. Retrieved 24 November 2021.
- ^ T. Boutell; et al. (March 1997). "PNG (Portable Network Graphics) Specification Version 1.0". RFC 2083. IESG. sec. 3. doi:10.17487/RFC2083.
- ^ "Registration of new Media Type image/png". IANA. 27 July 1996.
- ^ Roelofs 1999, 7장.휴대용 네트워크 그래픽 포맷의 기록.
- ^ a b c d W3C 2003, 11.2.2 이미지 헤더
- ^ Roelofs, Greg (29 September 2011). "Portable Network Graphics (PNG) Specification and Extensions". libpng. Retrieved 15 August 2021.
- ^ "PNG (Portable Network Graphics) Specification 1.0". W3C. 1 October 1996. sec. 8.4.
PNG itself is strictly a single-image format. (...) In the future, a multiple-image format based on PNG may be defined. Such a format will be considered a separate file format
- ^ Boutell, Thomas (1 October 1996). "PNG (Portable Network Graphics) Specification 1.0".
{{cite journal}}
:Cite 저널은 필요로 한다.journal=
(도움말) - ^ W3C 2003, 5.2 PNG 서명.
- ^ W3C 2003, 5.3 청크 레이아웃.
- ^ a b Laphroaig, Manul (31 October 2017). PoC or GTFO. ISBN 9781593278984.
Each chunk consists of four parts: Length, a Chunk Type, the Chunk Data, and a 32-bit CRC. The Length is a 32-bit unsigned integer indicating the size of only the Chunk Data field
- ^ Laphroaig, Manul (31 October 2017). - PoC or GTFO. ISBN 9781593278984.
Chunk Type is a 32-bit FourCC code such as IHDR, IDAT, or IEND.
{{cite book}}
:수표url=
가치(도움말) - ^ W3C 2003, 11.2.4 이미지 데이터.
- ^ W3C 2003, 11.2.5 이미지 트레일러.
- ^ W3C 2003, 11.3.3.3 임베디드 ICC 프로파일.
- ^ Thomas Kopp (17 April 2008). "PNG Digital Signatures: Extension Specification".
- ^ "Extensions to the PNG 1.2 Specification, Version 1.5.0".
- ^ W3C 2003, 11.3.3.2 이미지 감마.
- ^ W3C 2003, 11.3.5.3 물리적 픽셀 치수.
- ^ W3C 2003, 11.3.3.4 중요 비트.
- ^ https://www.w3.org/TR/PNG-Chunks.html - 제목이 "PNG(Portable Network Graphics) 사양 \ 버전 1.0" > 4.2.6. sBIT 중요 비트, 총 13바이트 - 색상 유형 2 및 3은 총 6바이트
- ^ Roelofs 2003, 중요 비트(sBIT)"회색 스케일 영상이 가장 단순함; sB그러면 IT는 소스 데이터의 중요 비트 수를 나타내는 단일 바이트를 포함한다."
- ^ "PNG Specification: Chunk Specifications".
- ^ "PNG News from 2006". Libpng.org.
- ^ a b "PNG Specification: Rationale". w3.org.
- ^ W3C 2003, 9 필터링.
- ^ "Filter Algorithms". PNG Specification.
- ^ Paeth, Alan W. (1991). Arvo, James (ed.). "Image File Compression Made Easy". Graphics Gems 2. Academic Press, San Diego: 93–100. doi:10.1016/B978-0-08-050754-5.50029-3. ISBN 0-12-064480-0.
- ^ Crocker, Lee Daniel (July 1995). "PNG: The Portable Network Graphic Format". Dr. Dobb's Journal. 20 (232): 36–44.
- ^ "Introduction to PNG". nuwen.net. Retrieved 20 October 2010.
- ^ a b "Can I use... Support tables for HTML5, CSS3, etc". caniuse.com. Retrieved 6 February 2021.
- ^ "iOS 8 and iPhone 6 for web developers and designers: next evolution for Safari and native webapps". mobilexweb.com. 17 September 2014. Retrieved 24 September 2014.
- ^ scroggo (14 March 2017). "chromium / chromium / src / 7d2b8c45afc9c0230410011293cc2e1dbb8943a7". chromium.googlesource.com. Retrieved 31 March 2017.
- ^ chrome-cron; et al. (27 March 2017). "chromium / chromium / src / 59.0.3047.0..59.0.3053.0". chromium.googlesource.com. Retrieved 31 March 2017.
- ^ "Vote failed: APNG 20070405a". 20 April 2007. Archived from the original on 3 February 2008.
- ^ "PNG Group animation proposal comparison + test-software". xs4all.nl. Archived from the original on 24 January 2009.
- ^ a b c Deutsch, L. Peter; Gailly, Jean-Loup (May 1996). "rfc1950". datatracker.ietf.org. Retrieved 18 August 2021.
- ^ Deutsch, L. Peter (May 1996). "rfc1951". datatracker.ietf.org. Retrieved 18 August 2021.
- ^ "A Basic Introduction to PNG Features". Libpng.org. Retrieved 20 October 2010.
- ^ "GIF, PNG, JPG. Which One To Use?". Sitepoint.com. 3 August 2009. Retrieved 20 October 2010.
- ^ "Extensions to the PNG 1.2 Specification, Version 1.5.0". Retrieved 5 May 2020.
- ^ "T.87 : Lossless and near-lossless compression of continuous-tone still images – Baseline". International Telecommunication Union. Retrieved 20 March 2011.
- ^ a b c d e f g Roelofs 2003, 9장. 압축 및 필터링
- ^ "libpng". Retrieved 13 July 2013.
- ^ "Use of PNG Images to Display Data". Oregon Water Science Center. 16 February 2006.
- ^ "Why There Are No GIF files on GNU Web Pages". GNU Operating System. 16 December 2008.
- ^ "PNG Fact Sheet". World Wide Web Consortium. 7 October 1996.
- ^ "Resource page for gif2png 2.5.11". catb.org.
- ^ "Burn All GIFs". burnallgifs.org.
- ^ "PNG Transparency in Internet Explorer". PC Magazine. 5 October 2004.
- ^ a b c d e "Browsers with PNG Support". 14 March 2009.
- ^ "Windows Explorer Crashes When I Click on a Fireworks PNG File to View It". Adobe Systems. 5 June 2007.
- ^ "Unable to view .png images with Internet Explorer 4.0". Microsoft Knowledge Base.
- ^ "PNGs That Are Inside of an Object Tag Print as a Negative Image". Microsoft Knowledge Base.
- ^ "PNG Images Are Printed Improperly in Internet Explorer 5.01". Microsoft Knowledge Base.
- ^ "You cannot view some PNG images in Internet Explorer 6". Microsoft Knowledge Base.
- ^ "You cannot use Internet Explorer 6 to open a PNG file that contains one or more zero-length IDAT chunks". Microsoft Knowledge Base.
- ^ "PNG Frequently Asked Questions".
- ^ "PhD: Portable Network Graphics Lose Transparency in Web Browser". Microsoft Knowledge Base.
- ^ "PNG Files Do Not Show Transparency in Internet Explorer". Microsoft Knowledge Base.
- ^ Lovitt, Michael (21 December 2002). "Cross-Browser Variable Opacity with PNG: A Real Solution". A List Apart. Archived from the original on 22 August 2011. Retrieved 21 July 2009.
- ^ "IE7 alpha transparent PNG + opacity". Channel 9. Archived from the original on 27 August 2011. Retrieved 23 January 2009.
- ^ Fulbright, Michael (1999). "GNOME 1.0 Library Roadmap". Archived from the original on 30 January 2010. Retrieved 19 December 2007.
- ^ "Windows Vista – Icons". OOne. 2007. Archived from the original on 11 November 2007. Retrieved 12 November 2007.
- ^ "PNG can be a lossy format". Pngmini.com. Retrieved 1 February 2014.
추가 읽기
- Roelofs, Greg (April 1997). "Linux Gazette: History of the Portable Network Graphics (PNG) Format". Linux Journal. Specialized Systems Consultants, Inc. 1997 (36es). ISSN 1075-3583.
- Roelofs, Greg (2003). PNG: The Definitive Guide (2nd ed.). O'Reilly Media. ISBN 1-56592-542-4.
- "Portable Network Graphics (PNG) Specification" (Second ed.). W3C. 10 November 2003.
외부 링크
- PNG 홈 사이트
- libpng 홈 페이지
- 그렉 롤로프스의 PNG 이야기
- 인라인 PNG 이미지 테스트
- RFC 2083
- PNG 색상 보정에 대한 자세한 정보
- PHP를 사용하여 동적 PNG 파일을 생성하는 GD 라이브러리
- PNG Adam7 인터레이싱
- PNG 파일에서 웹 셸 인코딩:IDAT 블록 내에서 사람이 읽을 수 있는 데이터 인코딩.