여기서 이미지 압축은 하나의 고정 화질을 적용하는 것이 아니라, 실제로 여러 번 인코딩해 보고 원본과 가깝게 보이는 것 중 가장 작은 파일을 남기는 작업입니다. 가장 작게·균형(기본)·고화질 중 하나를 고르면 Nerulio가 브라우저에서 PNG·JPG·WebP 후보를 만들고, 각각 다시 디코딩해 SSIM으로 채점한 뒤 그 단계의 유사도 기준을 넘는 가장 작은 후보를 돌려줍니다. 최대 너비를 정하지 않으면 해상도는 유지되고, 원본보다 나은 후보가 없으면 원본을 그대로 돌려줍니다. 정확한 용량 제한이 있다면 고급 설정의 목표 용량이나 100KB 같은 용량별 페이지를 쓰세요.
이미지을(를) 여기에 놓으세요여러 개를 한 번에 처리할 수 있습니다업로드 없음 · 이 기기에서 처리
게임을 만들고 있나요?
Nerulio는 무엇보다 2D 게임 에셋 스튜디오입니다. 도트를 그리고, 스프라이트 시트를 애니메이션으로 자르고, 텍스처 아틀라스를 패킹하고, 오토타일 타일셋을 점검해 Godot·Unity·Phaser 등 엔진용으로 내보냅니다. 브라우저에서 동작하며 파일은 기기 밖으로 나가지 않습니다.
단계마다 시작 화질과 기준값이 있습니다. 가장 작게 0.60 / 0.93, 균형 0.80 / 0.965, 고화질 0.92 / 0.985입니다. 자동 형식은 브라우저가 인코딩할 수 있는 모든 형식(Chromium에서는 PNG·JPG·WebP)을 시도하되, 투명한 픽셀이 하나라도 있으면 JPG를 빼서 투명도가 몰래 사라지지 않게 합니다.
후보는 모두 다시 디코딩해 원본과 비교합니다. 긴 변이 최대 512px인 사본에서 밝기 기준 8 × 8 SSIM을 검은 배경과 흰 배경 위에서 각각 계산하고 더 나쁜 점수를 씁니다. 그래서 투명 영역 아래 숨은 색이 점수를 속일 수 없습니다. 기준을 넘는 손실 후보 중 가장 작은 것이 이기며, 손대지 않은 원본과 PNG 재인코딩도 함께 경쟁합니다. 기준에 끝내 닿지 못하는 거친 사진은 최고 점수와 0.01 이내인 후보 중 가장 작은 것을 받습니다.
결과는 넣은 파일보다 커지지 않습니다. 모든 후보가 더 크면 원본 파일을 돌려주고 "이미 충분히 작아 원본을 유지했습니다"라고 표시합니다.
SSIM 기준
선택한 단계에서 후보가 넘어야 하는 최소 유사도(0.93, 0.965, 0.985).
후보
실제로 한 번 인코딩한 결과(형식 + 화질). 다시 디코딩해 채점합니다.
자동 형식
이 브라우저가 인코딩할 수 있는 모든 형식. 투명한 이미지에는 JPG를 쓰지 않습니다.
같은 사진 두 버전에 세 단계 적용(실측)
압축 작업과 같은 옵션의 Nerulio 압축기, Chromium 153, 2026-09-28. PNG는 저장소의 NASA 테스트 사진이고 JPG는 같은 사진을 Pillow 화질 75로 저장한 것입니다.
astronaut.png 512 x 512 791,555 바이트
가장 작게 WebP q0.60 22,048 바이트 SSIM 0.9626 (기준 0.93)
균형 WebP q0.80 32,200 바이트 SSIM 0.9749 (기준 0.965)
고화질 WebP q0.92 59,824 바이트 SSIM 0.9883 (기준 0.985)
astronaut-q75.jpg 512 x 512 40,240 바이트
균형 WebP q0.80 31,538 바이트 SSIM 0.9834
고화질 원본 유지 (기준을 넘은 JPG q0.92는 51,005 바이트)
고화질에서 0.985를 넘은 후보는 모두 원래 파일보다 커서 JPG가 그대로 돌아왔습니다. 이미 압축된 사진에서는 이것이 정상적인 결과입니다.
설정별 동작
설정
인코더 동작
선택되는 결과
가장 작게
JPG·WebP 화질 0.60
SSIM ≥ 0.93인 가장 작은 후보
균형(기본)
화질 0.80
SSIM ≥ 0.965인 가장 작은 후보
고화질
화질 0.92
SSIM ≥ 0.985인 가장 작은 후보
목표 용량 지정(고급)
맞을 때까지 화질을 낮춰 탐색
목표 이하 중 SSIM이 가장 높은 후보
최대 너비 지정(고급)
먼저 크기 변경(Pica, mks2013)
새 너비에서 위와 같음
결과 확인
파일 아래 줄을 읽으세요. 예: "773 KB → 31 KB · 해상도 512×512 유지". 용량은 1,024바이트 단위 KB입니다.
결과를 100%로 열어 손실이 먼저 드러나는 얼굴·글자·매끈한 그라데이션을 확인하세요.
확장자(-min.webp, -min.jpg, -min.png)가 받는 곳에서 허용하는 형식인지 확인하세요.
점수는 긴 변 최대 512px 사본에서 계산하므로 큰 이미지의 미세한 디테일은 점수가 떨어지지 않은 채 손상될 수 있습니다.
인코더는 브라우저의 것이라 다른 브라우저에서는 크기가 다를 수 있습니다. EXIF는 기록하지 않고 움직이는 파일은 거부합니다.
버전과 출처
모든 크기와 점수는 2026-09-28 Playwright Chromium 153에서 src/task/compress.js가 넘기는 옵션(단계별 화질과 기준, original = 넣은 파일) 그대로 src/compression.js를 호출해 tests/fixtures/astronaut.png, 이를 Pillow 12.3 화질 75로 저장한 JPG, tests/fixtures/texture/bricks_Color.png에서 측정했습니다.