PNG 포맷 — 무손실 압축과 투명 배경
PNG 포맷의 탄생 배경(GIF 특허 문제)과 1996년 W3C 권고부터 2025년 3판(HDR·APNG·EXIF)까지의 역사, 무손실 압축 원리와 청크 구조, 투명도, 사진에 쓰면 용량이 커지는 이유를 정리했습니다.
PNG(Portable Network Graphics)는 1990년대 중반 GIF에 쓰인 LZW 압축의 특허 문제를 피하면서 GIF보다 나은 기능을 제공하려고 만들어진 포맷입니다. 1996년 W3C 권고가 되었고, 이후 ISO/IEC 15948로도 표준화되었습니다. 2025년 6월에는 2판(2003년) 이후 22년 만의 개정판인 PNG 3판이 W3C 권고로 발표되어 애니메이션 PNG(APNG), HDR 색 정보, EXIF 청크를 표준에 정식으로 포함했습니다.
압축 원리
PNG는 픽셀 값을 전혀 바꾸지 않는 무손실 포맷입니다. 각 행에 필터를 적용해 "왼쪽·위쪽 픽셀과의 차이"처럼 예측하기 쉬운 값으로 바꾼 뒤, zip과 같은 계열의 Deflate 알고리즘으로 압축합니다. 같은 색이 넓게 반복되면 차이 값이 0으로 이어져 매우 작게 압축되고, 픽셀마다 값이 조금씩 다른 사진은 거의 압축되지 않습니다.
색을 256개 이하로 줄여 팔레트 방식(인덱스 컬러)으로 저장하면 용량을 크게 줄일 수 있는데, 이 과정 자체는 색을 줄이는 손실이므로 결과물이 PNG여도 원본과 달라진다는 점을 기억하세요.
파일 서명과 청크 구조
PNG 파일은 항상 8바이트 서명(16진수 89 50 4E 47 0D 0A 1A 0A)으로 시작합니다. 그 뒤로 청크라는 단위가 이어지는데, 각 청크는 길이·종류(4글자)·데이터·CRC 검사값으로 이루어집니다.
| 청크 | 역할 |
|---|---|
| IHDR | 가로·세로, 비트 깊이, 색 형식 |
| PLTE | 팔레트(인덱스 컬러일 때) |
| tRNS | 팔레트·단색 이미지의 투명 정보 |
| IDAT | 압축된 픽셀 데이터(여러 개로 나뉠 수 있음) |
| eXIf | EXIF 메타데이터(3판에서 정식 포함) |
| cICP | HDR 등 색 공간 정보(3판에서 추가) |
| acTL · fcTL · fdAT | APNG 애니메이션 제어·프레임(3판에서 정식 포함) |
| IEND | 파일 끝 |
모르는 보조 청크는 무시하도록 설계되어 있어, 새 기능을 추가해도 오래된 프로그램이 파일을 열 수 있습니다. APNG를 지원하지 않는 뷰어가 첫 프레임만 보여 주는 것도 이 설계 덕분입니다.
투명도
PNG는 픽셀마다 0~255(16비트면 0~65,535) 단계의 알파 채널을 가질 수 있어, 반투명한 그림자나 머리카락 경계까지 자연스럽게 표현합니다. 배경을 지운 이미지, 로고, 아이콘을 저장하는 표준 포맷으로 쓰이는 이유입니다.
장점과 한계
- 글자·선·도표에 최적: 경계가 선명하게 유지되고 용량도 JPG보다 작은 경우가 많습니다.
- 반복 저장해도 손실 없음: 편집 중간 파일로 적합합니다.
- 사진에는 비효율적: 같은 사진을 JPG의 몇 배 용량으로 저장하게 됩니다.
- APNG 지원: Can I use 기준 Chrome 59, Firefox 3, Safari 8부터 지원하며, 지원하지 않는 프로그램은 첫 프레임만 표시합니다.
주 용도
화면 캡처, 로고·아이콘, 투명 배경 이미지, 도표·그래프, 편집용 원본. 인쇄소가 무손실 파일을 요구할 때도 쓰입니다.
다른 포맷으로 변환할 때
- PNG → JPG: 투명한 부분은 배경색으로 채워야 합니다. 스크린샷을 JPG로 바꾸면 글자 주변이 번질 수 있으니 품질을 높게 두세요(PNG를 JPG로).
- PNG → WebP: 무손실 WebP로 바꾸면 투명도를 유지하면서 용량이 줄어드는 경우가 많습니다. Google은 무손실 WebP가 PNG보다 평균 26% 작다고 발표했습니다.
- PNG → ICO: 파비콘이나 윈도우 아이콘이 필요하면 PNG를 ICO로 변환합니다. 정사각형 원본을 쓰는 것이 좋습니다.
- 16비트 PNG: 브라우저 Canvas는 채널당 8비트로 처리하므로, 16비트 원본을 웹 도구로 변환하면 8비트로 줄어듭니다.