Pixel Snapper 대안 · 도트 정리 도구 실측 비교
가짜 도트를 진짜 격자로 되돌려 준다는 무료 도구가 여럿 있습니다. Sprite Fusion의 Pixel Snapper, unfake.js, perfectPixel을 각자의 기본값으로, 원래 1배 그림을 아는 CC0 스프라이트 69개에 똑같이 돌리고 같은 방식으로 채점했습니다. Nerulio가 이긴 곳과 진 곳을 함께 적습니다.
Sprite Fusion의 Pixel Snapper, unfake.js, perfectPixel은 모두 확대·크기 변경·생성된 "가짜" 도트를 격자 위의 1배 이미지로 바꾸지만, 재는 방법도 실패하는 방식도 다릅니다. Pixel Snapper(Rust, 명령줄과 웹 페이지)는 항상 맞추고 색을 줄이며 기본은 16색입니다. unfake.js(자바스크립트 라이브러리와 브라우저 도구)는 정수 배율을 다루고 벡터화도 합니다. perfectPixel(파이썬)은 FFT로 격자를 찾으며 칸이 4px보다 작으면 포기합니다. Nerulio 정리 패널은 브라우저 편집기 안에서 돌고, 먼저 격자와 확신 정도를 보여 주며 불확실하면 맞추지 않습니다.

- .aseprite검증됨· Aseprite 1.3.18
- Palette files측정 확인· read back
- Engine bundles검증됨· Godot 4.7.2 · Unity 6000.5
- Frame PNG · .nerulio일반 파일
각 도구가 실제로 하는 일
Pixel Snapper(MIT, Hugo Duprez)는 Rust로 만들어졌습니다. 명령줄은 spritefusion-pixel-snapper input.png output.png 16이며, 픽셀 크기를 감지해 맞추고 고정 팔레트로 양자화합니다. 기본 16색이고 --palette로 직접 고른 헥스 색을 줄 수 있으며, --pixel-size로 감지 결과를 덮어씁니다. 같은 엔진이 spritefusion.com에서도 돌고, README는 타일맵과 게임 에셋용 생성 그림을 대상으로 합니다.
unfake.js(MIT)는 브라우저 도구가 딸린 자바스크립트 라이브러리입니다. 구간 기반 또는 가장자리 인식 배율 감지, 우세 색·중앙값·내용 적응 축소, 색 양자화, 형태학적 정리에 더해 이미지를 SVG로 바꾸는 벡터화 기능이 있습니다. perfectPixel(MIT, pip install perfect-pixel)은 FFT로 격자를 찾고 Sobel 가장자리로 다듬은 뒤 중심·중앙값·다수결로 샘플링하며, ComfyUI 노드와 웹 데모가 있습니다.
Nerulio는 정수 블록 격자를 정확히 증명하고, 소수·부드러운 크기 변경은 격자로 재며(쌍선형은 최소제곱 역변환), 고르지 않은 가짜 픽셀은 가장자리를 따라가고, 결과에 확실·가능성 높음·불확실을 붙입니다. 확실과 가능성 높음만 적용합니다. 결과는 도트 편집기 안의 새 스프라이트라서 어느 도구든 틀리는 픽셀을 손으로 고칠 수 있습니다.
- 양자화
- 그림을 정해진 개수의 색(팔레트)으로 줄이는 것.
- 격자 감지
- 가짜 픽셀의 칸 크기(와 오프셋)를 찾는 것.
- 확신 정도
- 도구가 얼마나 확실한지 알려 주는지 여부. Nerulio는 알려 주고, 다른 도구는 어느 경우든 결과를 내놓습니다.
이렇게 작동합니다
- 사례: CC0 스프라이트·타일 13개(Kenney, Eris, GrafxKid, DezrasDragons 등)를 정해진 방법으로 망가뜨렸습니다. 최근접 ×2~×8, 소수 배율 최근접, 쌍선형·쌍삼차·Lanczos 확대, JPEG, 흐림, 크기가 고르지 않은 모의 생성 그림.
- 채점: 최대 2px 이동 중 가장 잘 맞는 위치에서 정확한 픽셀, Oklab ΔE 0.02 이내 픽셀, 결과 크기가 정확한지·1px 이내인지. 실패한 실행은 0으로 세므로 어려운 사례를 건너뛰어 좋아 보일 수 없습니다.
- 이미지 생성기로 만든 실제 그림 7장은 정답이 없습니다. Nerulio는 7장 모두 불확실로 판정해 크기를 그대로 두고 약한 후보를 보여 줬고, 다른 도구는 항상 추측을 내놓았습니다. 같은 3장에 unfake.js는 픽셀 크기 3을, Pixel Snapper와 perfectPixel은 약 6을 골랐습니다.
- Nerulio는 바꾸기 전에 잰 격자와 확신 정도를 보여 주고, 결과는 편집기의 새 스프라이트가 되어 튀는 픽셀·팔레트·외곽선을 손으로 고칠 수 있습니다.
- 모든 것을 다시 돌릴 수 있는 스크립트와 데이터가 도구 버전·설정과 함께 저장소(docs/pixel-bench)에 있습니다.
같은 사례 69개, 같은 채점
전체 결과이며 실패한 실행은 틀린 것으로 셉니다. docs/STUDIO-PIXEL.md §5, docs/pixel-bench/H2H.md §3.
| 도구 | 정확한 크기 | 크기 ±1px | 정확한 픽셀 | ΔE 0.02 이내 | 실패 |
|---|---|---|---|---|---|
| Nerulio, 기본값 | 81 % | 90 % | 63.2 % | 75.4 % | 0 |
| Nerulio, 배경 유지 | 81 % | 90 % | 74.0 % | 91.1 % | 0 |
| unfake.js(라이브러리 기본값) | 25 % | 41 % | 44.6 % | 64.6 % | 0 |
| unfake.js(브라우저 도구, 격자 자동) | 26 % | 42 % | 40.7 % | 64.8 % | 0 |
| perfectPixel | 30 % | 43 % | 33.9 % | 55.9 % | 15 |
| Sprite Fusion Pixel Snapper | 6 % | 28 % | 33.4 % | 54.7 % | 0 |
이 수치의 출처: docs/STUDIO-PIXEL.md §5, docs/pixel-bench/H2H.md
Pixel Snapper, unfake.js and perfectPixel 쪽이 더 나은 경우
- 스크립트로 부를 수 있는 라이브러리입니다. Pixel Snapper는 명령줄이 있는 Rust, unfake.js는 자바스크립트, perfectPixel은 파이썬. Nerulio의 정리는 Studio 안에서만 돌고 명령줄이 없습니다.
- JPEG 입력을 기본값으로 돌리면 unfake.js가 ΔE 0.02 이내 픽셀을 더 많이 남겼습니다(74.6 %, Nerulio 기본값 48.4 %). Nerulio는 배경을 유지해야 84.0 %가 됩니다.
- 생성된 그림에도 항상 답을 내놓습니다. Nerulio는 불확실한 그림을 픽셀 크기를 입력할 때까지 그대로 둡니다.
- perfectPixel은 모의 생성 그림의 크기를 두 배 더 자주 정확히 찾았고(40 % 대 20 %), 깨끗한 최근접 확대에서 격자를 찾으면 결과가 정확합니다.
사용 방법
- 확대되거나 생성된 그림을 이 페이지에 끌어다 놓으면 픽셀 작업 공간에 열립니다.
- 정리 패널에서 측정을 누르고 판정을 읽습니다. 정확한 블록 격자, 소수 배율이나 부드러운 확대, 또는 제안 크기가 붙은 불확실.
- 불확실한 그림은 그려진 격자를 확대해 보고 눈에 보이는 픽셀 크기를 입력합니다. 색이 지저분하면 색 제한이나 팔레트 양자화를 켭니다.
- 미리보기 후 새 스프라이트로 적용하고, 내보내기 전에 연필로 픽셀 몇 개를 다듬습니다.
언제 무엇을 쓰나
| 방법 | 이럴 때 더 낫습니다 |
|---|---|
| Pixel Snapper | 모든 이미지에 명령 한 번으로 정해진 색 수의 결과가 필요하거나, 이미 spritefusion.com을 쓸 때. 우리 실행에서 칸이 클 때(×5·×7 타일 사례는 크기 1px 이내에 픽셀 전부 일치) 그리고 모의 생성 그림(80 %에서 크기 1px 이내)에서 가장 좋았고, 정수 배율 확대에서는 너무 잘게 나눠 정확한 크기를 한 번도 맞히지 못했습니다. |
| unfake.js | 자바스크립트 파이프라인 안의 깨끗한 정수 확대. 격자를 auto로 두면 ×2~×8 최근접에서 정확한 크기의 85 %를 찾았습니다. 이미지를 SVG로 벡터화하는 기능도 있는데 Nerulio에는 없습니다. |
| perfectPixel | 칸이 4px 이상인 파이썬·ComfyUI 대량 처리. 깨끗한 확대에서 격자를 찾으면 결과가 정확하고(완벽한 사례 10개), 모의 생성 그림의 크기를 40 %에서 정확히 찾았습니다. 기본 min_size 4px보다 작으면 아무것도 내놓지 않습니다(실패 15건 중 11건). |
| Nerulio 정리 패널 | 소수·부드러운 크기 변경(해당 사례에서 정확한 크기 100 %·93 %), 격자와 팔레트를 하나로 맞춰야 하는 애니메이션, 무엇이든 바꾸기 전에 격자를 보고 싶을 때. |
| 손으로 다시 그리기 | 어떤 도구도 일관된 격자를 못 찾는 생성 콘셉트 그림. 모의 생성 그림에서 정확한 픽셀이 70.3 %를 넘은 도구는 없었습니다. |
엔진별 내보내기와 검증 방법
"검증됨"은 실제 CC0 에셋으로 내보낸 파일을 해당 엔진·도구가 직접 불러와 원본과 비교했다는 뜻입니다. 불러오지 않은 형식은 그렇게 표시합니다.
| 대상 | 파일 | 검증 |
|---|---|---|
| .aseprite | layers · blend · opacity · locked · indexed palette · frames · tags | 검증됨 Aseprite 1.3.18실제 Aseprite 명령줄이 파일을 인덱스 모드, 레이어 2개, 불투명도 160의 곱하기, 편집 불가로 잠긴 레이어 그대로 다시 열었고 프레임 픽셀이 같았습니다. |
| Palette files | .gpl · .pal · .hex · .ase · .act · .json | 측정 확인 read back형식마다 쓰고 다시 읽어 같음을 확인했고, Aseprite가 만든 .gpl·.pal·.hex·.act와 실제 Adobe .ase(16색)를 읽었습니다. |
| Engine bundles | Godot 4 · Unity 6 · Phaser 3/4 · PixiJS 8 … through Pack & Export | 검증됨 Godot 4.7.2 · Unity 6000.5그린 스프라이트는 패킹·내보내기에서 묶습니다. 그 엔진 파일은 실제 CC0 에셋으로 각 엔진에서 불러와 확인했습니다(49회 중 47회 통과, 실패 2회는 Phaser 3 프리셋이 피하는 Phaser 3.90 버그). |
| Frame PNG · .nerulio | PNG-8 with the palette when an indexed frame fits it · project file | 일반 파일어떤 도구에서도 쓰는 일반 파일이며, 엔진 실행 검증은 주장하지 않습니다. |
검증 근거
정리 벤치마크(원래 1배 그림을 아는 CC0 사례 69개): 크기를 정확히 찾은 비율 81 %(±1px 90 %), 배경 유지 시 픽셀 74.0 % 정확. 가장 나은 경쟁 도구는 크기 30 %(perfectPixel), 정확한 픽셀 44.6 %(unfake.js). Aseprite로 만든 ×4 최근접 확대는 100 %, ×3.78 쌍선형 확대는 99.7 % 정확하게 돌아왔고 두 경우 모두 크기를 자동으로 찾았습니다. 1px 외곽선과 드롭 섀도는 Aseprite 결과와 픽셀까지 같았습니다(1846px, 705px). 여기서 쓴 .aseprite는 Aseprite 1.3.18에서 인덱스 모드와 레이어·블렌드·잠금이 그대로 열립니다.
한계
- 명령줄도 라이브러리도 없습니다. Nerulio 정리는 브라우저의 Studio 안에서만 돕니다.
- SVG 벡터화 기능이 없습니다.
- 실제 생성 이미지는 크기를 입력할 때까지 그대로 둡니다. 우리 시험에서 7장 모두 그랬습니다.
- 기본 설정은 단색 테두리 배경을 지우므로, 배경이 그림의 일부인 경우 정확한 픽셀이 줄어듭니다(배경 유지 74.0 % 대 63.2 %).
- 픽셀 작업 공간에 없는 것(Aseprite에는 있음): 레이어 그룹, 링크된 셀, 타일맵 레이어, 참조 레이어, RotSprite와 선택 영역 자유 회전·크기 조절(뒤집기와 90°만), 그라디언트·스프레이·윤곽·텍스트 도구, 사용자 브러시(사각·원 1~16px), 타일 반복 그리기, Lua 스크립트와 명령줄.
- 대칭 축은 숫자로 입력하며 캔버스에서 끌 수 없습니다. 터치에서는 오른쪽 버튼이 없어 배경색은 전환 버튼이나 X로 씁니다.
- 정리: JPEG는 가깝게 돌아오지만(배경 유지 시 84 %가 ΔE 0.02 이내) 정확히 같은 경우는 드뭅니다(12 %). 모의 생성 그림은 크기를 정확히 맞힌 비율이 20 %(±1px 80 %)이고, 실제 생성 그림 7장은 하나도 자동으로 맞추지 않았습니다. 패널이 제안한 픽셀 크기를 직접 입력해야 합니다.
- 인덱스 변환은 Aseprite의 RGB 거리가 아니라 Oklab에서 가장 가까운 색을 고릅니다. 시험 스프라이트의 68 % 픽셀이 다른(눈으로 더 가까운) 색이 됐습니다. Lospec 검색이 유일한 네트워크 요청이며 먼저 묻습니다.
버전과 출처
경쟁 도구는 2026-09-23/24에 각자의 기본값으로 실행했습니다. Pixel Snapper = spritefusion.com에서 받은 WebAssembly 빌드(저장소 ae20461, 1.0.0), 16색 — 실제 페이지와 바이트까지 같은지는 확인하지 못함. unfake.js는 b2bee10(라이브러리 기본값, 브라우저 도구 기본값, 격자 auto). perfectPixel 0.1.4(72096de)는 OpenCV로 실행했으며 알파를 버립니다. Nerulio는 2026-09-25에 실행(docs/pixel-bench/H2H.md, docs/STUDIO-PIXEL.md §5). 도구 설명은 각 프로젝트의 README를 따랐습니다.
참고한 공식 문서
자주 묻는 질문
이미지 생성기로 만든 그림에는 어느 도구가 가장 좋나요?
아직 믿을 만한 도구는 없습니다. 모의 생성 그림에서 크기를 정확히 가장 자주 찾은 것은 perfectPixel이고(40 %, Nerulio 20 %), Nerulio·perfectPixel·Pixel Snapper는 80 %에서 1px 이내였습니다. 가장 크게 갈린 것은 정확한 픽셀로, 배경 유지 시 Nerulio 70.3 %, 다른 도구는 모두 7 % 미만이었습니다.
Nerulio가 일부 그림을 맞추지 않는 이유는?
격자 근거가 약하면 추측하지 않고 불확실이라고 말합니다. 그래도 가장 나은 후보와 그 격자를 보여 주므로 그 크기를 입력해 적용할 수 있습니다. 경쟁 도구는 얼마나 확실한지 말하지 않고 추측을 내놓습니다.
경쟁 도구는 공정하게 돌렸나요?
방문자가 쓰는 방식 그대로 각자의 기본값으로 돌렸습니다. Pixel Snapper는 사이트의 WebAssembly 빌드로 16색, unfake.js는 라이브러리와 브라우저 도구, perfectPixel은 파이썬 패키지. 설정과 버전은 docs/pixel-bench/H2H.md에 있습니다.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).