스프라이트 시트 생성기
이미지 묶음을 끌어다 놓으면 생성기가 균일한 그리드에 배치하고 브라우저 안에서 하나의 스프라이트 시트 PNG를 그린 다음, 스프라이트마다 background-position 오프셋이 있는 CSS를 출력합니다. 모든 작업이 캔버스에서 로컬로 실행되므로 서버로 업로드되는 것은 없습니다. 아이콘 세트, 레트로 게임 프레임, 여러 개의 개별 이미지 대신 하나의 파일을 원하는 UI 상태에 유용합니다. 열 수, 타일 크기, 셀 사이 간격, 배경(투명, 흰색, 검정)을 직접 설정합니다.
스프라이트 시트가 만들어지는 방식
-
1
이미지 끌어다 놓기
PNG, JPG, WebP 파일을 추가합니다. 위/아래 버튼으로 순서를 바꾸거나 원하는 프레임을 삭제할 수 있으며, 시트는 즉시 다시 만들어집니다.
-
2
그리드 설정
열 수를 고르면 추가한 이미지 수에 따라 행 수가 정해집니다. 각 이미지는 가로세로 비율을 유지한 채 정사각형 타일에 맞게 크기가 조정되고 가운데에 놓입니다.
-
3
타일 크기와 간격 조정
타일 크기를 픽셀로 고르고, 크기를 조정할 때 이웃 스프라이트가 번지지 않도록 셀 사이에 간격을 추가합니다.
-
4
PNG 내려받고 CSS 복사
스프라이트 시트를 하나의 PNG로 저장하고 생성된 CSS 클래스를 복사합니다. 이미지마다 너비, 높이, background-position이 있는 `.spr-이름` 규칙이 하나씩 만들어집니다.
배치가 작동하는 방식
생성기는 예측 가능한 단일 배치, 즉 균일한 그리드를 사용합니다. 열 수를 정하면 행 수는 올림(이미지 / 열)이 됩니다. 모든 셀은 같은 정사각형 크기(고른 타일 크기)이므로, 각 이미지는 가로세로 비율을 유지한 채 자기 셀에 맞게 조정되고 가운데에 놓입니다. 크기가 다른 이미지도 모두 같은 크기의 셀에 들어가며, 이는 background-position을 쓰는 CSS 스프라이트가 기대하는 바로 그 형태입니다.
| 컨트롤 | 범위 | 효과 |
|---|---|---|
| 열 | 1~16 | 한 행당 스프라이트 수. 행은 자동 계산 |
| 타일 크기 | 32~512 px | 각 이미지를 맞춰 넣는 정사각형 셀 |
| 간격 | 0~64 px | 크기 조정 시 번짐을 막는 셀 사이의 투명한 틈 |
| 배경 | 투명 / 흰색 / 검정 | 출력 PNG에서 스프라이트 뒤를 채우는 색 |
생성되는 CSS의 형태
각 이미지는 파일 이름을 딴 클래스(.spr-<이름>)가 되며, 타일 크기로 지정되고 자기 셀로 오프셋됩니다. 열 4개, 타일 크기 128 px, 간격 없음일 때 시트는 다음과 같습니다.
.spr-idle { width: 128px; height: 128px; background: url(spritesheet.png) -0px -0px; }
.spr-walk { width: 128px; height: 128px; background: url(spritesheet.png) -128px -0px; }
.spr-run { width: 128px; height: 128px; background: url(spritesheet.png) -256px -0px; }
.spr-jump { width: 128px; height: 128px; background: url(spritesheet.png) -384px -0px; }
.spr-fall { width: 128px; height: 128px; background: url(spritesheet.png) -0px -128px; }
오프셋은 두 방향으로 움직입니다. 스프라이트는 각 행을 왼쪽에서 오른쪽으로 채운 뒤 다음 행으로 넘어갑니다. PNG를 CSS 옆에 spritesheet.png로 저장하세요(또는 경로에 맞게 url(...)을 수정하세요).
간격과 번짐
가장자리를 맞대어 채운 스프라이트는 브라우저가 시트 크기를 조정할 때(정수가 아닌 픽셀 비율, CSS 변형) 서로 번질 수 있습니다. 이웃 픽셀이 새어 들지 않도록 셀 사이에 2~4픽셀 간격을 추가하세요.
고밀도(레티나) 디스플레이
자동 2x 내보내기는 없지만, 더 선명한 시트를 간단히 만들 수 있습니다. 각 스프라이트가 더 많은 픽셀을 갖도록 더 큰 타일 크기를 고르고(예: 128 px 대신 256 px) CSS에서는 절반 크기로 표시하세요. 그러면 별도의 과정 없이 고밀도 화면에서도 선명한 스프라이트를 얻습니다.
스프라이트 시트 vs 대안
- 스프라이트 시트: CSS의 고전적인 아이콘 세트, HTML5 게임 프레임, 많은 작은 이미지를 한 파일로 묶으면 유리한 페이지.
- SVG 스프라이트(symbol): 현대적인 UI 아이콘에 더 적합하고, 손실 없이 확대되며, CSS
fill을 받아들이고,background-position으로 씨름할 필요가 없습니다. - 아이콘 폰트: 제한적이지만 아주 작은 단색 아이콘에는 여전히 쓰입니다.
- HTTP/2 또는 HTTP/3의 개별 파일: 멀티플렉싱 덕분에 요청 수의 중요성은 예전만큼 크지 않습니다.
자주 묻는 질문
이미지는 브라우저에 남습니다. 여러 단계 흐름에서는 선택한 이미지 파일과 레이아웃이 이 브라우저 탭에 최대 30분 동안만 임시 보관됩니다. 서버로 전송되거나 URL에 추가되는 것은 없습니다.
네, 다만 인라인 SVG나 SVG <symbol> 스프라이트가 대개 컴포넌트 프레임워크에 더 잘 맞습니다. CSS 스프라이트 시트는 정적 페이지에서 많은 이미지를 동시에 보여줄 때 빛을 발합니다.
각 프레임이 한 행에 오도록 열 수를 프레임 수와 같게 맞춘 뒤, CSS animation-timing-function: steps(N)과 셀 단위로 건너뛰는 background-position으로 제어하세요. 짧은 반복 애니메이션(로더, 대기 상태)에 잘 맞습니다.
그리드의 각 셀은 같은 정사각형 크기(고른 타일 크기)이므로, 각 이미지는 자기 셀에 맞춰지고 가운데에 놓입니다. 스프라이트가 이미 동일한 정사각형이라면 타일 크기를 그에 맞게 설정하면 변경 없이 통과합니다.
관련 도구
PNG를 SVG로 벡터화
브라우저에서 PNG 래스터 이미지를 SVG 패스로 변환합니다. 로고, 아이콘, 선화에 적합하며 임계값, 색상 수, 스무딩을 조절할 수 있습니다.
티어 리스트 만들기
텍스트와 기기 내 이미지로 비공개 티어 리스트를 만드세요. 행을 꾸미고 드래그나 키보드로 순위를 정한 뒤 JSON, PNG 또는 SVG로 내보낼 수 있습니다.
그래피티 글자 생성기
태그, 버블, 블록, 스텐실, 네온, 와일드 효과로 글자를 꾸미세요. 색상을 조절하고 브라우저에서 PNG 또는 SVG로 내보낼 수 있습니다.
GIF 제작기
이미지 시퀀스를 애니메이션 GIF로 변환합니다. 내보내기 전에 프레임률, 품질, 크기를 조정하세요.
대량 이미지 리사이저
여러 이미지를 끌어다 놓고 목표 크기에 맞추거나 늘린 뒤 JPG, PNG, WebP 파일을 하나의 ZIP으로 내보냅니다. 처리는 브라우저 안에서 끝납니다.
QR 코드 생성기
텍스트 또는 URL로 브라우저 안에서 QR 코드를 만들고 PNG로 다운로드하세요.