Rust로 만든 PNG 압축 라이브러리 pngdeer, 같은 화질에서 TinyPNG보다 8~12% 작은 파일을 주장
Rust로 작성된 오픈소스 PNG 압축 라이브러리 pngdeer가 공개됐다. MIT 라이선스로 배포되며, 명령줄 도구와 브라우저에서 파일을 서버로 보내지 않고 처리하는 웹 데모를 함께 제공한다. 이미지마다 품질을 자동으로 선택하는 기능이 기본으로 들어간다.
가장 눈에 띄는 것은 성능 주장이다. 개발자는 공개 벤치마크에서 동일한 SSIMULACRA2 화질 점수를 기준으로 비교했을 때 파일 크기 중앙값이 TinyPNG보다 8~12% 작았다고 밝혔다. 같은 조건에서 기존 오픈소스 프로젝트들보다도 앞선다는 것이 개발자의 설명이다. 다만 이 수치는 개발자 본인이 공개한 자료에 근거한 것이며, 독립적인 제3자 검증을 거친 결과는 아니다.
외부 개발자가 39장의 이미지를 놓고 직접 비교한 결과도 공개됐다. 원본 대비 압축 후 파일 크기 비율과 화질 중앙값을 함께 본 표에서 pngdeer는 전체 기준 28.7%에 화질 87.6을 기록했다. 비교 대상인 pngquant는 32.2%에 87.2, yasuo는 29.6%에 82.3이었다. 사진, 배경을 제거한 사진, 일러스트, 3D 렌더링 등 대부분 범주에서 pngdeer가 더 작은 파일에 더 높은 화질 점수를 냈다는 평가다. 아이콘 범주에서는 색상 수를 적극적으로 줄여 파일 크기를 57.9%까지 낮추면서 화질은 91.0을 유지했다.
이 프로젝트는 AI 모델을 활용해 시작됐다. 개발자는 자신의 컴퓨터에 있던 PNG 파일들을 Opus 5.5에 맡겨 TinyPNG를 넘는 압축 도구를 만들게 했고, 이후 사람이 직접 눈으로 결과를 확인하며 모델의 판단을 계속 교정하는 방식으로 다듬었다고 설명한다. 특정 이미지가 유독 잘 압축되지 않는 문제를 분석해 개선하는 과정을 반복했다는 것이다.
가장 큰 제약은 속도다. pngdeer는 이미지마다 2색에서 256색까지 가능한 색상 수를 하나씩 시도한 뒤 가장 작은 결과를 고르는 방식이라, 비교 대상 도구들보다 연산량이 많다. 개발자에 따르면 16스레드로 39장, 약 16MB를 압축하는 데 1~2분가량이 걸린다. 같은 작업에서 yasuo는 장당 0.05~0.3초 수준이다. 개발자는 CLI 속도를 약 20% 개선했고 브라우저 쪽은 개선 폭이 제한적이라고 밝혔다.
실무 관점에서 선택지는 명확해진다. 빌드 타임에 한 번 압축해 두고 오래 쓰는 정적 이미지라면 느린 속도를 감수하고 더 작은 파일을 얻는 쪽이 유리할 수 있다. 반면 사용자가 업로드한 이미지를 즉시 처리해야 하는 서비스라면 여전히 기존 도구가 낫다. 압축률과 처리 시간을 저울질해 파이프라인 위치를 정하는 것이 핵심이다.
주의할 점도 있다. 공개된 수치는 개발자 자체 벤치마크와 외부 개발자 한 명의 비교 측정에 기반하며, 측정 이미지 수나 구성이 제한적이다. 또한 품질 점수는 SSIMULACRA2라는 지표에 의존하므로, 지표가 잡아내지 못하는 색 번짐이나 인공적인 느낌은 별도로 확인해야 한다.