Generator sprite sheetów CSS
Darmowy generator sprite sheetów CSS. Połącz do 500 obrazów w jeden PNG z klasami CSS background-position lub atlasem tekstur JSON, bez przesyłania.
Obrazy
- Rozmiar arkusza
- Wykorzystane miejsce
Jak zrobić sprite sheet
- Upuść obrazy na pole albo kliknij je, aby je wybrać. Akceptowane są PNG, SVG, WebP, JPG i inne formaty, które potrafi odczytać twoja przeglądarka – do 500 obrazów. Każdy plik pojawia się na liście Obrazy wraz z wymiarami; przycisk × usuwa pojedynczy obraz, a Usuń wszystkie obrazy czyści listę.
- Wybierz Układ: Siatka, Upakowany (najmniejszy arkusz), Pasek poziomy lub Pasek pionowy. Przy Siatka opcja Kolumny (0 = automatycznie) ustala liczbę kolumn.
- Ustaw Odstęp (px) między sprite’ami (domyślnie 2) i zaznacz Rozmiar będący potęgą dwójki (256, 512, 1024…), jeśli wymaga tego twój silnik lub GPU.
- Wybierz Plik danych: CSS (klasy z background-position), JSON (mapa klatek) lub CSS i JSON. Dostosuj Nazwa pliku i Prefiks klas CSS (domyślnie oba to „sprite”).
- Sprawdź podgląd, Rozmiar arkusza i Wykorzystane miejsce, a potem kliknij Pobierz ZIP (PNG + dane) lub Pobierz tylko PNG. Wygenerowany kod można też skopiować bezpośrednio.
Obrazy są dekodowane w twojej przeglądarce i nic nie jest przesyłane. Plik SVG bez własnej szerokości i wysokości jest rasteryzowany tak, że jego dłuższy bok ma 256 px.
Wybór układu
- Siatka daje każdemu obrazowi komórkę o rozmiarze największego obrazu. Przy automatycznej liczbie kolumn siatka jest mniej więcej kwadratowa. To układ prosty i przewidywalny, idealny, gdy wszystkie sprite’y mają ten sam rozmiar, np. w zestawie kafelków.
- Upakowany (najmniejszy arkusz) stosuje pakowanie półkowe: obrazy są sortowane od najwyższego i układane od lewej do prawej w rzędach. Narzędzie sprawdza wiele szerokości arkusza i wybiera tę o najmniejszej powierzchni, uwzględniając zaokrąglanie do potęgi dwójki, gdy ta opcja jest włączona. Najlepszy do ikon o różnych rozmiarach.
- Pasek poziomy i Pasek pionowy umieszczają obrazy w jednym wierszu lub jednej kolumnie w kolejności dodania. Tego oczekuje wiele odtwarzaczy animacji dla klatek.
Arkusz nie może przekroczyć 16 384 px na bok ani około 16,7 megapiksela – to limit tego, co potrafią narysować przeglądarki.
Jak używać CSS
Plik CSS zawiera klasę bazową z arkuszem jako background-image i no-repeat, a potem po jednej klasie na każdy sprite, nazwanej od pliku: home.png staje się sprite-home. Nazwy są zamieniane na małe litery, znaki diakrytyczne usuwane, inne znaki zamieniane na myślniki, a duplikaty dostają -2, -3.
<link rel="stylesheet" href="sprite.css">
<span class="sprite sprite-home"></span>
<span class="sprite sprite-search"></span>
Każda klasa sprite’a ustawia width, height i background-position z ujemnymi przesunięciami. Sprite w punkcie x = 40, y = 20 dostaje background-position: -40px -20px: cały arkusz jest przesuwany wewnątrz elementu o 40 px w lewo i 20 px w górę, więc przez obszar elementu widać tylko ten sprite. Odstęp zapobiega przenikaniu sąsiednich sprite’ów przy powiększeniu strony lub filtrowaniu tekstury.
Ekrany o wysokiej gęstości pikseli: narysuj obrazy w dwukrotnie większym rozmiarze niż wyświetlany, wygeneruj arkusz, a potem dodaj do klasy bazowej background-size równe połowie rozmiaru arkusza i podziel na pół szerokości, wysokości i przesunięcia. Narzędzie tego nie generuje – to ręczna poprawka.
Czy sprite’y mają sens przy HTTP/2?
Sprite’y wymyślono, żeby oszczędzać żądania HTTP. Dzięki multipleksowaniu w HTTP/2 wiele małych plików ładuje się prawie tak szybko jak jeden, więc zysk dla stron internetowych jest dużo mniejszy, a do skalowalnych ikon często lepsze są ikony SVG lub fonty z ikonami. Sprite sheety pozostają za to standardem w grach 2D i klatkach animacji: jedna tekstura oznacza mniej przełączeń tekstur na GPU i jeden plik do wczytania.
Najczęściej zadawane pytania
Czy moje obrazy są przesyłane?
Nie. Wszystko jest dekodowane, pakowane i kodowane w twojej przeglądarce. Obrazy nigdy nie opuszczają twojego urządzenia.
Które silniki gier odczytają plik JSON?
JSON używa formatu „JSON hash” z TexturePackera: obiekt frames z kluczami w postaci nazw plików, każdy z frame (x, y, w, h), rotated: false, trimmed: false i sourceSize, oraz meta.image i meta.size. Phaser, PixiJS i wiele innych silników wczytuje go bezpośrednio.
Czy przezroczystość jest zachowana?
Tak. Arkusz to PNG, więc przezroczyste piksele pozostają przezroczyste. Szachownica w podglądzie pokazuje jedynie puste miejsca arkusza.
Po co rozmiary będące potęgą dwójki?
Starsze GPU i WebGL 1 wymagają tekstur o rozmiarach potęgi dwójki dla mipmap i trybów powtarzania, a niektóre silniki nadal ich oczekują. Opcja zaokrągla arkusz w górę, np. 300 × 70 px staje się 512 × 128 px.
Czy sprite’y są przycinane lub obracane?
Nie. Każdy obraz jest umieszczany bez zmian, z przezroczystymi marginesami, i nigdy nie jest obracany, więc pozycje dokładnie odpowiadają oryginalnym plikom.
Podobne narzędzia
- Dzielenie zdjęcia na części i siatka Podziel zdjęcie na siatkę kafelków do posta na Instagramie, panoramy lub plakatu do druku, z podglądem cięcia i numerowanymi plikami. Bez przesyłania.
- Kreator GIF-ów Zrób animowanego GIF-a z kilku zdjęć lub krótkiego filmu. Zmieniaj kolejność klatek, opóźnienia, zapętlenie, rozmiar, kolory i dithering. Bez przesyłania.
- Kolaż zdjęć Zrób kolaż zdjęć z 2–9 fotografii w układzie siatki lub mozaiki, przeciągaj zdjęcia do pól, przesuwaj je i powiększaj, a potem zapisz PNG lub JPG.
- Generator favicon Utwórz favicon.ico, ikony PNG, apple-touch-icon i site.webmanifest z jednego obrazu lub emoji, z gotowymi znacznikami HTML. Pobierz ZIP bez przesyłania.