본문으로 건너뛰기

AI 없는 도트 확대 · 정수 배율 최근접 1×~8×

스토어 페이지·트레일러·SNS용 도트는 흐리지 않게 키워야 합니다. 정수 최근접 확대는 각 픽셀을 정확한 N×N 블록으로 만들고, 저장 전에 결과 크기를 보여 줍니다.

스프라이트 프레임(PNG)을 끌어다 놓으세요. 여러 프레임이 하나의 팔레트를 씁니다
픽셀 랩 열기
브라우저에서 처리하며 파일은 업로드되지 않습니다.
픽셀 랩: 추출한 팔레트 하나에 고정된 CC0 스프라이트 프레임과 색별 픽셀 비율
CC0 에셋(OpenGameArt)을 연 실제 픽셀 랩 화면입니다.
출력
  • PNG frames측정 확인· Pillow
  • Palette측정 확인· re-import
  • pixel-lab.json미검증

이렇게 작동합니다

  • 최근접 방식만 쓰는 1×~8× 정수 배율. 필터도, 만들어 낸 디테일도 없습니다.
  • 검사기가 이미 확대된 이미지인지(정확한 배율과 오프셋) 감지해, 확대본을 다시 확대하지 않게 합니다.
  • 정확한 격자가 있으면 먼저 1배 원본을 복원하고 그것을 확대하세요.
  • 애니메이션은 프레임마다 처리하며 PNG로 내보냅니다.

사용 방법

  1. 이미지나 프레임을 끌어다 놓습니다.
  2. 배율 보고서를 읽고, 이미 확대된 경우 1배로 복원합니다.
  3. 정수 배율을 고릅니다.
  4. PNG로 내보냅니다.

출력 파일과 검증 방법

"측정 확인"은 내려받은 파일을 페이지 밖에서(Pillow·numpy·별도 파서) 다시 열어 그 속성을 측정했다는 뜻입니다. 게임 엔진에서 불러오는 것은 시험하지 않았습니다.

대상파일검증
PNG framesanim_N.png · 1×–8× nearest측정 확인 Pillow내보낸 PNG를 다시 읽어 모든 색이 고정 팔레트 안에 있는지 확인했습니다.
Palette.gpl · .hex (Lospec) · .json측정 확인 re-import각 형식을 내보내고 UI로 다시 가져와 16 → 16색을 확인했습니다.
pixel-lab.jsongeneric frames + palette미검증일반 JSON이며 어떤 엔진에서도 불러오지 않았습니다.

검증 근거

안티앨리어싱된 프레임 8개 → 16색 팔레트 하나, 팔레트 밖 색 0개. 디더링 없음과 Bayer 4×4 모두에서 변하지 않은 영역이 8프레임 모두 동일. 안티앨리어싱 제거로 271색 → 16색, 실루엣 픽셀 이동 0. 정수 배율·오프셋·2.5배 비정수 배율을 정확히 감지.

한계

  • 4096 × 4096보다 큰 프레임은 거부합니다. 모든 처리가 메인 스레드에서 돌고 아직 취소 버튼이 없습니다.
  • 스프라이트 시트는 이미지 하나로 다룹니다. 먼저 프레임으로 자르세요(스프라이트 시트 자르기).
  • 디더링을 켜면 정리 개수에 디더 픽셀이 포함됩니다. 먼저 디더링을 없음으로 두세요.
  • 내보내는 JSON은 일반 형식이며 Godot·Unity 가져오기는 시험하지 않았습니다.

자주 묻는 질문

왜 정수 배율만 되나요?

정수가 아닌 배율은 일부 픽셀을 더 넓게 만듭니다. 검사기는 그것도 측정합니다. 2.5배 최근접 확대는 2.500배로 읽고 정수라고 하지 않습니다.

AI 업스케일러처럼 디테일을 더하나요?

아니요. 결과의 모든 픽셀은 원본 픽셀의 복사입니다.

무료인가요? 계정이 필요한가요?

이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.

스프라이트가 업로드되나요?

아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.

Aseprite나 엔진 플러그인을 설치해야 하나요?

아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).