PNG
1. 그림 파일 형식
1.1. 개요
'''P'''ortable '''N'''etwork '''G'''raphics의 약자로 그림 파일형식 중 하나이다.
PNG는 무손실 압축 포맷을 채택하였으며, 256색에 한정되던 GIF의 한계를 극복하여 32비트 트루컬러[1][2] 를 표현할 수 있게 되었다. 다만 네이티브 PNG는 GIF에서 제공하던 애니메이션 기능은 제공하지 못한다.
더불어 GIF가 제공하던 '투명 배경'은 이 형식에서도 지원된다. 엄밀히 말하자면 GIF는 특정색 한가지만 투명으로 지정하는 방법이고, PNG는 알파채널을 포함해서 완벽하게 불투명도를 지정할 수 있다. 인터넷 익스플로러의 예전 버전은 PNG 알파 채널을 불완전하게 지원하는 문제가 있었지만[3] 요즘은 정상적으로 지원한다.
JPEG의 공식 발음이 '제이펙'인 것처럼 PNG는 '핑'으로 부르도록 하고 있으나 아무도 그렇게 말하지 않고 (네트워크 용어인 PING과도 혼동될 여지가 있다.) 그냥 '피엔지'로 통한다.
1.2. 탄생 배경
PNG의 탄생배경은 MP3에 적용된 특허권을 피하기 위해 Vorbis가 개발된 것과 동일하다. 초창기 인터넷에서 그림파일들은 컴퓨서브(CompuServ)사에서 개발한 GIF 형식을 사용하고 있었다. 하지만 GIF의 핵심이 되는 LZW 알고리즘에 대하여 유니시스(Unisys)사에서 특허권을 취득하고 그 권한을 행사하기 시작하자, 프로그래머들은 이참에 GIF의 몇가지 문제점들을 해결하는 셈치고 새로운 그림 파일형식을 개발하기 시작하였고 1996년에 PNG가 발표되었다.
하지만 개발을 하고 발표를 했어도 초창기에는 크게 인기를 얻지 못했는데, 이유는 LZW 알고리즘에 대하여 비상용 소프트웨어의 경우에는 무료 특허 정책을 적용하여 GIF를 계속 사용할 수 있었기 때문이다. 또한 압축율이 높은 만큼 당시 컴퓨터 스펙으로는 GIF에 비해 처리속도가 느리기도 했다. H.264 규격이 나올 당시 좌절영상이 왜 많았는지를 떠올려 보면 답이 나온다.
하지만 1999년에 이 정책이 폐기되면서 소프트웨어 개발자들이 대안을 찾기 시작했고, 이에 따라 PNG를 지원하는 프로그램도 점점 증가하였다. 현재는 W3C에서 표준안이 나오고(W3C 표준), ISO 표준 규격(ISO 15948, 한국어 설명)이 나왔을 정도로 보편적인 그림파일 형식으로 자리잡은 상태다.
1.3. 특징
등장 초기에는 같은 그림을 PNG로 압축할 경우 GIF보다 훨씬 큰 파일을 만든다고 불평을 늘어놓는 경향이 있었는데, 사실 이는 256색만 지원하는 GIF와 32비트 컬러를 지원할 수 있는 PNG의 차이 때문이다. 그리고 어도비사의 제품이 PNG 파일에 독특한 메타데이터(XMP, ISO표준이다.)를 붙인다거나, 포토샵 구버전들이 PNG 형식의 압축 알고리즘을 잘 구현하지 못했던 까닭에 충분한 압축 효율을 발휘하지 못했던 영향도 있다. 물론 이러한 문제는 일찍이 해결되었다.[4] 또한, GIF처럼 최대 256색 Indexed 모드인 'PNG-8' 형식[5] 으로 저장하면 파일 크기가 확 줄어든다. (흔히 말하는 24비트+알파채널 지원 PNG는 'PNG-24'이다.)
무손실 압축 포맷임에도 다른 무손실 포맷인 BMP·PCX·TGA 등에 비해 압축 효율이 좋은 편이어서, 사진에서 raw 파일을 보관할 때 이미지가 전체적으로 뭉개지는 JPEG나 256색의 한계로 모든 것을 표현하지 못하는 GIF보다 PNG 형식을 선호하는 사람들도 있을 수는 있겠지만 PNG는 일단 EXIF를 지원하지 못하므로 사진에는 잘 쓰이지 않는다. 대신에 XMP를 지원한다.
TIFF의 경우 ZIP 알고리즘을 사용한다면 PNG와 용량이 비슷한데다 EXIF도 지원하고, 포토샵 라이트룸과 같이 TIFF를 48비트의 높은 색 심도로 저장하는 프로그램이 많으므로 사진에서 후보정을 염두에 둔다면 거의 EXIF-TIFF 포맷을 사용하게 된다. 다만, PNG도 48비트 컬러를 지원한다.
다만 과거 대부분의 웹사이트에서 업로드 할 수 있는 용량을 아주 낮게 설정해둔 경우가 많았는데, 이 경우 PNG로 압축을 할 경우 용량을 초과하는 경우가 허다했다. 현재도 그러한 경향이 남아 있기 때문에 웹상에서의 그림은 PNG 형식보다는 JPG의 비중이 더 높은 편이다. 특히 사진 같은 경우는 JPG로 어느정도 손실압축해도 그 변화를 알아차리기 힘들기 때문에 큰 문제없이 쓰인다.
1단계로 이미지 필터링 작업을 거친 뒤 ZIP 포맷에서 사용하는 Deflate 알고리즘을 사용하여 압축하기 때문에, 그냥 BMP파일을 ZIP으로 압축한 것보다 훨씬 더 높은 압축률을 보여준다. 일반 사진 이미지보다는 패턴이 반복되거나 단순한 형태의 파일을 압축할 경우 경이로운 압축률을 볼 수 있다. 지형 분석에 사용되는 고도 높이맵 데이터라든가, 게시판의 글을 캡처한 경우라든가.
CRC-32 알고리즘을 사용하여 검사비트를 기록하기때문에 1비트라도 손상이 되면 바로 알 수 있다.
웹에서 이미지에 반투명을 사용할 경우 거의 유일한 방법이다. JPG는 투명이 아예 안되고, GIF는 투명이 되지만 반투명은 안 되기 때문이다. WebP는 반투명은 되지만 보급율이 아직 높지 않다. PNG가 대중화되기 전에는 GIF의 투명기법을 사용해서 1픽셀씩 건너서 투명과 불투명을 반복하는 기법을 써서 반투명을 표현했다. 또한 원래 배경과 어우러지게 배경을 투명처리한 이미지를 배치할 때도 GIF보다 PNG가 좋다. GIF는 한 색만 투명처리되기 때문에 도트 노가다를 하지 않는 이상 필연적으로 계단 현상이 생길 수밖에 없지만, PNG는 256단계의 투명 단계(알파 채널)를 지원하기 때문에 계단 현상이 생기지 않는다.
월드 와이드 웹 컨소시움 (W3C)에서 사진에 HDR 밝기를 표현 가능하게 해주는 색상 프로필을 공개하였다. BT. 2100 규격에 의하여 기존의 BT.1886 SDR 감마 영역이 아닌 ST.2084 HDR 감마 영역으로 색상을 매핑하며 색 공간은 BT.2020이다. [W3C] PNG 이미지 파일에 BT.2100 HDR PQ EOTF를 적용하기 PNG 이미지도 HDR 밝기 영역을 지원한다.
1.4. Animated PNG
모질라에서 주도해서 만든 APNG(Animated PNG)라는 것도 있는데 표준 규격은 아니다. 애니메이션 기능을 지원 안 해도 정지 영상은 보인다.
형제뻘로 애니메이션 기능을 지원하는 MNG, JPEG 압축 기능을 지원하는 JNG가 있지만 지원하는 프로그램이 적어 거의 이용되지 않는다. 구조적으로 매우 복잡해서 지원을 거의 안 한다고 한다.
[image]
[image]
위의 두 이미지가 APNG 파일이다. 표준이 아니기에 모든 브라우저에서 움직이지는 않으며 지원하지 않는 브라우저에서는 정지되어 보인다. 지원하는 브라우저에서는 튀는 공과 파이어폭스 로고의 여우가 회전하는걸 볼 수 있다. 파이어폭스 3 이후, 오페라 클래식 9.5 이후, 오페라 46 이후, 사파리 8.0 이후, 크롬 59 이후, 네이버 웨일, 마이크로소프트 엣지 크로미움 기반에서 지원하며 모바일에서는 iOS용 사파리와 안드로이드(운영체제)용 파이어폭스, 크롬, 삼성 인터넷, 마이크로소프트 엣지, 웨일 브라우저가 지원하고 있다.
Animated GIF보다 발색이 뛰어나고[6] 용량 대비 효율이 훌륭하지만[7] , PNG개발그룹 측에서는 '''PNG는 단일 이미지를 저장하기 위한 규격이지, 애니메이션 이미지를 저장하는 데 쓰는 규격이 아니다'''라는 이유로 APNG의 표준안 수용을 거부했다. 이후 표준이 아니란 이유로 구글은 크로뮴 프로젝트에 APNG 구현을 거부했다가 크롬 버전 59부터 다시 APNG를 지원하기 시작했다.
이처럼 차세대 Animated 이미지 규격이 통일되지 못하고 있는 관계로 GIF가 여전히 많이 쓰이고 있는 실정이다.
2018년 5월 4일 기준으로 지원하지 않는 데스크톱 브라우저는 인터넷 익스플로러와 Microsoft Edge 구버전 뿐이다. 그나마도 인터넷 익스플로러는 보안 업데이트를 제외한 지원이 중단되었으며, Microsoft Edge는 크롬과 같은 크로미움 기반으로 갈아탔다.
라인(메신저)의 애니메이션 스티커가 APNG를 사용한다.
1.5. 그 외
동방탄막풍에서 유일하게 지원하는 그림 확장자이기도 하다.
RPG 쯔꾸르 2000, RPG 쯔꾸르 2003에서도 유일하게 지원한다.(그 이후 출시된 툴은 JPEG도 지원.)
오에카키에서 사용하는 파일 포맷이기도 하다.
디지털 영사기에서 사용하는 자막을 이 파일로 만들기도 한다. 디지털 영화인데 타이틀을 고유 글꼴로 만들었다면 100% 이 방식이라고 보면 된다.
2. ISO 코드
파푸아뉴기니('''P'''apua '''N'''ew '''G'''uinea)의 ISO 3166-1 코드(3자리). 2자리는 PG이다.
3. Persona Non Grata
기피인물. 자신의 나라에 주재하는 외교관을 무이유부로 거부하고 싶을때 선언한다.
자세한 내용은 페르소나 논 그라타 참고.
4. Piped Natural Gas
파이프를 통해 공급되는 천연가스. 해당 항목 참조.
5. Papua New Guinea
파푸아뉴기니의 약자. 항목 참조.
[1] RGB에 각 8비트+알파채널 8비트 지원.[2] 다만 PNG형식도 팔레트를 사용한 인덱스 색상을 지원한다.[3] IE 6은 지원하지 않으며, IE 7/8은 지원하기는 하나 CSS 알파와 동시에 사용할 경우 작동하지 않는 버그가 있다. [4] 그런데 최신 버전인 CC 2014에서 PNG로 일반 저장시 파일 크기가 비정상적으로 커지는 버그가 있으며 아직까지도 고쳐지지 않았다(...) 웹용으로 저장은 이런 현상이 없다는 것이 천만다행.[5] 256색 내에 욱여넣을 수 있다면 반투명 알파 채널도 쓸 수 있다.[6] GIF는 256색밖에 지원하지 않기 때문에 색감이 매우 조악하다. PNG가 특별히 뛰어나다기 보단, 현재 웹에서 쓰이는 이미지 중에 아직도 256색이 쓰이는 포맷은 GIF밖에 없다.[7] 단 움짤용으론 구글의 WebP/WebM쪽이 용량과 재생 성능이 더 좋다.