Blog · 가이드

합리적인 PNG 워크플로: oxipng, zopfli, 팔레트

PNG는 결코 구식이 아닙니다 — 제대로 쓰면 평면 그래픽에 가장 적합한 포맷입니다. 밴딩이나 디더링 아티팩트 없이 가장 작은 파일을 만드는 방법을 소개합니다.

palette → oxipng → zopfli

PNG는 “용량이 크다”는 오명을 자주 쓰지만, 대부분의 비대한 PNG는 그저 인코딩이 부실했을 뿐입니다. 양자화, 최적화, 재압축이라는 명확한 3단계 워크플로를 거치면, 선명한 경계와 깔끔한 색상을 유지하면서도 무손실로 PNG 용량을 절반 이상 줄이는 일이 흔해집니다. 중요한 것은 이 순서입니다.

PNG가 올바른 도구인 경우

PNG는 <b>평면적이고 경계가 뚜렷한 그래픽</b>을 위해 만들어졌습니다. 로고, 아이콘, UI 내보내기, 다이어그램, 스크린샷, 그리고 투명도가 필요한 모든 것 말이죠. 무손실이므로 경계는 언제나 칼같이 깨끗합니다. 텍스트 주변에 JPEG 같은 모스키토 노이즈가 생기지 않습니다. 사진에는 잘못된 선택이지만(WebP/AVIF/JPEG를 쓰세요), 최신 앱을 가득 채우는 합성 그래픽에는 잘 만든 PNG를 이길 게 없습니다.

1단계: 가능하면 팔레트로 양자화하기

대부분의 UI 그래픽은 1,600만 색보다 훨씬 적은 색을 사용합니다. 24비트 트루컬러 PNG를 <b>8비트 인덱스 팔레트</b>(256색 이하)로 변환하는 것은 단연 가장 강력한 지렛대입니다. 다른 최적화를 하기도 전에 파일을 절반으로 줄이는 경우가 흔합니다. 관건은 색상을 잘 고르고 그라데이션을 신중히 다루는 것입니다. 좋은 양자화 도구는 최적의 팔레트를 고르고, 실제로 도움이 되는 곳에서만 디더링을 적용합니다.

2단계: oxipng으로 필터 최적화하기

PNG는 압축 전에 행 단위로 <i>필터</i>를 적용하며, 이 선택이 용량에 큰 영향을 미칩니다. <b>oxipng</b>은 필터 전략을 시험해보고 이미지를 재압축하는데, 빠르고 병렬로 처리되며 화질 손실이 전혀 없습니다. 매일 안전하게 쓸 수 있는 기본 도구입니다. 폴더 하나를 지정하면 그 안의 모든 PNG를 그저 더 작게 만들어줍니다. 트루컬러 이미지와 팔레트 이미지 모두에 실행하세요.

3단계: zopfli로 DEFLATE 쥐어짜기

절대적인 최소 용량을 원하고 시간이 좀 걸려도 괜찮다면, <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>(색을 흩뿌려 더 많은 색처럼 보이게 하면서 생기는 얼룩)입니다. 해법은 판단력입니다. 그라데이션은 트루컬러로 유지하고, 평면 영역만 양자화하며, 눈이 밴딩보다 노이즈를 선호하는 낮은 팔레트 크기에서만 디더링을 적용하세요. 확신이 서지 않으면 배포하기 전에 양자화된 버전을 원본과 비교해보세요.

단계
도구
손실
양자화
팔레트 / pngquant 방식
선택적, 제어 가능
필터 최적화
oxipng
없음
재압축
zopfli
없음

PNG를 제대로 절반으로 줄이세요.

팔레트, oxipng, zopfli를 한 번에 — 기본적으로 무손실, Mac에서 실행됩니다.

계속 읽기