확대된 도트 원래 크기로 줄이기 · 1배 복원
×4로 저장한 스프라이트, 스크린숏, 소수 배율로 크기를 바꾼 스토어 이미지는 한 픽셀이 여러 픽셀 덩어리가 되고 부드럽게 번지기도 합니다. 정리 패널은 그림만 보고 픽셀 크기를 재고, 찾은 격자와 확신 정도를 보여 준 뒤, 원본을 건드리지 않고 1배 스프라이트를 새로 만듭니다.

- .aseprite검증됨· Aseprite 1.3.18
- Palette files측정 확인· read back
- Engine bundles검증됨· Godot 4.7.2 · Unity 6000.5
- Frame PNG · .nerulio일반 파일
이렇게 작동합니다
- 측정은 아무것도 바꾸지 않습니다. "×7 확대", "부드럽게 약 ×4.25 크기 변경" 같은 판정, 확실·가능성 높음·불확실로 표시한 픽셀 크기, 입력·결과 크기, 색 잡음, 감지한 배경을 알려 주고 캔버스에 격자를 그립니다.
- 정확한 정수 블록은 격자에서 어긋나게 잘린 경우까지 찾습니다. 칸이 2px·3px로 번갈아 나오는 소수 배율 최근접 확대는 가장자리 간격으로 찾고, 부드러운 확대는 쌍선형 필터의 최소제곱 역변환으로 되돌립니다.
- 각 칸은 가장 많은 색이나 Oklab 중간값 색 하나가 되며 가장자리를 평균하지 않고, 거의 같은 색은 Oklab에서 합쳐 외곽선이 또렷하게 남습니다.
- 미리보기는 정수 배율로 전후를 보여 주고 나란히 비교할 수 있습니다. 적용하면 1배 스프라이트가 되돌리기 한 번짜리 새 스프라이트로 추가되고 프레임·시간·피벗·박스·태그가 유지됩니다.
- 모든 계산은 메인 스레드 밖 워커에서 돌고, 같은 입력과 옵션은 항상 같은 바이트를 냅니다. 384×576 ×4 확대는 처음부터 끝까지 1.4초, 363×544 쌍선형 확대는 4.7초 걸렸습니다.
사용 방법
- 확대된 PNG를 이 페이지에 끌어다 놓으면 그림 한 장으로 픽셀 작업 공간에 열립니다.
- 정리 패널에서 범위(이 프레임, 태그, 모든 프레임)를 고르고 측정을 눌러 판정과 캔버스의 격자를 확인합니다.
- 단색 배경이 그림의 일부라면 배경을 유지로 바꿉니다. 그대로 두면 테두리 색이 투명해집니다.
- 미리보기로 전후를 비교하고 새 스프라이트로 적용을 누른 뒤 1배 결과를 내보냅니다.
확대 방식별 1배 결과의 정확도
원래 그림과 비교한 정확한 픽셀: 기본값 / 배경 유지. CC0 사례 69개, docs/STUDIO-PIXEL.md §5.
| 확대 방식 | 크기를 정확히 찾음 | 정확한 픽셀 |
|---|---|---|
| 최근접, 정수 배율(×2~×8) | 100 % | 92.2 % / 97.4 % |
| 최근접, 소수 배율(×2.5·×3.3·×4.7) | 100 % | 88.6 % / 97.0 % |
| 부드러운 확대(쌍선형·쌍삼차·Lanczos) | 93 % | 70.5 % / 75.9 % |
| 확대 뒤 흐림 | 67 % | 53.8 % / 66.4 % |
| 확대 뒤 JPEG | 80 % | 4.5 % / 12.1 %(ΔE 0.02 이내 84.0 %) |
엔진별 내보내기와 검증 방법
"검증됨"은 실제 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에서 인덱스 모드와 레이어·블렌드·잠금이 그대로 열립니다.
한계
- 픽셀 작업 공간에 없는 것(Aseprite에는 있음): 레이어 그룹, 링크된 셀, 타일맵 레이어, 참조 레이어, RotSprite와 선택 영역 자유 회전·크기 조절(뒤집기와 90°만), 그라디언트·스프레이·윤곽·텍스트 도구, 사용자 브러시(사각·원 1~16px), 타일 반복 그리기, Lua 스크립트와 명령줄.
- 대칭 축은 숫자로 입력하며 캔버스에서 끌 수 없습니다. 터치에서는 오른쪽 버튼이 없어 배경색은 전환 버튼이나 X로 씁니다.
- 정리: JPEG는 가깝게 돌아오지만(배경 유지 시 84 %가 ΔE 0.02 이내) 정확히 같은 경우는 드뭅니다(12 %). 모의 생성 그림은 크기를 정확히 맞힌 비율이 20 %(±1px 80 %)이고, 실제 생성 그림 7장은 하나도 자동으로 맞추지 않았습니다. 패널이 제안한 픽셀 크기를 직접 입력해야 합니다.
- 인덱스 변환은 Aseprite의 RGB 거리가 아니라 Oklab에서 가장 가까운 색을 고릅니다. 시험 스프라이트의 68 % 픽셀이 다른(눈으로 더 가까운) 색이 됐습니다. Lospec 검색이 유일한 네트워크 요청이며 먼저 묻습니다.
자주 묻는 질문
잰 픽셀 크기가 틀리면 어떻게 하나요?
판정에는 확신 정도가 붙고, 약한 격자는 확실한 것으로 적용하지 않고 주황 점선으로 그립니다. 정리 패널에 픽셀 크기를 직접 입력하세요. 적용을 누르기 전에는 아무것도 바뀌지 않고, 적용은 새 스프라이트를 만듭니다.
결과가 예상보다 1픽셀 작거나 큰 이유는?
그림이 격자에서 몇 픽셀 어긋나게 잘려 있으면 테두리 칸이 온전하지 않습니다. 벤치마크에서 크기를 정확히 찾은 비율은 81 %, 1px 이내는 90 %였습니다.
JPEG 스크린숏에도 되나요?
일부만 됩니다. JPEG 잡음 때문에 색이 비트까지 같게 돌아오는 경우는 드물지만(배경 유지 시 12 %), 84 %는 원래 색과 ΔE 0.02 이내로 1배에서는 구별되지 않습니다. PNG가 있으면 PNG를 쓰세요.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).