합리적인 PNG 워크플로: oxipng, zopfli, 팔레트
PNG는 결코 구식이 아닙니다 — 제대로 쓰면 평면 그래픽에 가장 적합한 포맷입니다. 밴딩이나 디더링 아티팩트 없이 가장 작은 파일을 만드는 방법을 소개합니다.
PNG는 결코 구식이 아닙니다 — 제대로 쓰면 평면 그래픽에 가장 적합한 포맷입니다. 밴딩이나 디더링 아티팩트 없이 가장 작은 파일을 만드는 방법을 소개합니다.
PNG는 “용량이 크다”는 오명을 자주 쓰지만, 대부분의 비대한 PNG는 그저 인코딩이 부실했을 뿐입니다. 양자화, 최적화, 재압축이라는 명확한 3단계 워크플로를 거치면, 선명한 경계와 깔끔한 색상을 유지하면서도 무손실로 PNG 용량을 절반 이상 줄이는 일이 흔해집니다. 중요한 것은 이 순서입니다.
PNG는 <b>평면적이고 경계가 뚜렷한 그래픽</b>을 위해 만들어졌습니다. 로고, 아이콘, UI 내보내기, 다이어그램, 스크린샷, 그리고 투명도가 필요한 모든 것 말이죠. 무손실이므로 경계는 언제나 칼같이 깨끗합니다. 텍스트 주변에 JPEG 같은 모스키토 노이즈가 생기지 않습니다. 사진에는 잘못된 선택이지만(WebP/AVIF/JPEG를 쓰세요), 최신 앱을 가득 채우는 합성 그래픽에는 잘 만든 PNG를 이길 게 없습니다.
대부분의 UI 그래픽은 1,600만 색보다 훨씬 적은 색을 사용합니다. 24비트 트루컬러 PNG를 <b>8비트 인덱스 팔레트</b>(256색 이하)로 변환하는 것은 단연 가장 강력한 지렛대입니다. 다른 최적화를 하기도 전에 파일을 절반으로 줄이는 경우가 흔합니다. 관건은 색상을 잘 고르고 그라데이션을 신중히 다루는 것입니다. 좋은 양자화 도구는 최적의 팔레트를 고르고, 실제로 도움이 되는 곳에서만 디더링을 적용합니다.
PNG는 압축 전에 행 단위로 <i>필터</i>를 적용하며, 이 선택이 용량에 큰 영향을 미칩니다. <b>oxipng</b>은 필터 전략을 시험해보고 이미지를 재압축하는데, 빠르고 병렬로 처리되며 화질 손실이 전혀 없습니다. 매일 안전하게 쓸 수 있는 기본 도구입니다. 폴더 하나를 지정하면 그 안의 모든 PNG를 그저 더 작게 만들어줍니다. 트루컬러 이미지와 팔레트 이미지 모두에 실행하세요.
절대적인 최소 용량을 원하고 시간이 좀 걸려도 괜찮다면, <b>zopfli</b>는 더 작은 스트림을 훨씬 집요하게 찾아내는 DEFLATE 호환 압축기입니다. 느립니다. 이미지당 몇 초씩 걸리기도 하지만, 모든 디코더가 읽을 수 있는 표준 PNG를 만들어내며, 흔히 oxipng만 썼을 때보다 몇 퍼센트 더 작습니다. 한 번 배포하고 수백만 번 제공되는 에셋에 완벽합니다.
# 처음부터 끝까지 무손실인 전체 파이프라인 imageforge ui.png --palette auto --lossless # 1단계 imageforge ./icons/*.png --optimize oxipng # 2단계 imageforge logo.png --optimize zopfli --effort max # 3단계
팔레트 PNG의 두 가지 실패 유형은 <b>밴딩</b>(색상이 부족할 때 그라데이션에 나타나는 눈에 띄는 계단 현상)과 <b>디더링 노이즈</b>(색을 흩뿌려 더 많은 색처럼 보이게 하면서 생기는 얼룩)입니다. 해법은 판단력입니다. 그라데이션은 트루컬러로 유지하고, 평면 영역만 양자화하며, 눈이 밴딩보다 노이즈를 선호하는 낮은 팔레트 크기에서만 디더링을 적용하세요. 확신이 서지 않으면 배포하기 전에 양자화된 버전을 원본과 비교해보세요.