Sprite sheet-generator

Geselecteerd bestand herstellen...

Sleep een reeks afbeeldingen en de generator plaatst ze op een gelijkmatig raster en tekent één sprite sheet-PNG in je browser, en levert daarna CSS met een background-position-offset per sprite. Alles draait lokaal op het canvas, dus er wordt niets naar een server geüpload. Handig voor iconensets, retro-gameframes en UI-toestanden waarbij je liever één bestand hebt dan veel losse afbeeldingen. Jij bepaalt het aantal kolommen, de tegelgrootte, de tussenruimte tussen cellen en de achtergrond (transparant, wit of zwart).

Zo wordt het sprite sheet gebouwd

  1. 1

    Sleep je afbeeldingen

    Voeg PNG-, JPG- of WebP-bestanden toe. Herschik ze met de omhoog/omlaag-knoppen of verwijder een frame; het sheet wordt meteen opnieuw opgebouwd.

  2. 2

    Stel het raster in

    Kies het aantal kolommen; het aantal rijen volgt uit hoeveel afbeeldingen je toevoegde. Elke afbeelding wordt geschaald om in één vierkante tegel te passen, met behoud van de beeldverhouding en gecentreerd.

  3. 3

    Regel tegelgrootte en tussenruimte

    Kies de tegelgrootte in pixels en voeg tussenruimte tussen cellen toe zodat naburige sprites niet in elkaar overlopen bij het schalen.

  4. 4

    Download de PNG en kopieer de CSS

    Sla het sprite sheet op als één PNG en kopieer de gegenereerde CSS-klassen, één `.spr-naam`-regel per afbeelding met breedte, hoogte en background-position.

Zo werkt de indeling

De generator gebruikt één voorspelbare indeling: een gelijkmatig raster. Je stelt het aantal kolommen in, het aantal rijen is naar_boven_afronden(afbeeldingen / kolommen). Elke cel heeft dezelfde vierkante grootte (de gekozen tegelgrootte), dus elke afbeelding wordt geschaald om in haar cel te passen met behoud van de beeldverhouding en wordt gecentreerd. Afbeeldingen van verschillende grootte komen allemaal in gelijke cellen terecht, precies wat CSS-sprites met background-position verwachten.

Instelling Bereik Effect
Kolommen 1 tot 16 Sprites per rij; de rijen worden automatisch berekend
Tegelgrootte 32 tot 512 px De vierkante cel waarin elke afbeelding wordt gepast
Tussenruimte 0 tot 64 px Transparante ruimte tussen cellen om overlopen bij schalen te voorkomen
Achtergrond Transparant / Wit / Zwart Vulling achter de sprites in de uitvoer-PNG

Vorm van de gegenereerde CSS

Elke afbeelding wordt een klasse met de naam van het bestand (.spr-<naam>), op de tegelgrootte gedimensioneerd en naar haar cel verschoven. Bij vier kolommen, een tegelgrootte van 128 px en zonder tussenruimte ziet het sheet er zo uit:

.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; }

De offset beweegt in twee dimensies: sprites vullen elke rij van links naar rechts en springen dan naar de volgende rij. Sla de PNG op als spritesheet.png naast je CSS (of pas url(...) aan je pad aan).

Tussenruimte en overlopen

Sprites die rand aan rand zijn gepakt kunnen in elkaar overlopen wanneer de browser het sheet schaalt (niet-gehele pixelverhoudingen, CSS-transformaties). Voeg 2 tot 4 pixels tussenruimte tussen cellen toe zodat naburige pixels niet doorlekken.

Schermen met hoge dichtheid (retina)

Er is geen automatische 2x-export, maar je kunt eenvoudig een scherper sheet maken: kies een grotere tegelgrootte (bijvoorbeeld 256 px in plaats van 128 px) zodat elke sprite meer pixels draagt, en toon hem dan op de helft van de CSS-grootte. Zo krijg je scherpe sprites op schermen met hoge dichtheid zonder aparte doorgang.

Sprite sheets of alternatieven

  • Sprite sheets: klassieke iconensets in CSS, HTML5-gameframes en pagina’s die baat hebben bij het bundelen van veel kleine afbeeldingen in één bestand.
  • SVG-sprites (symbol): beter voor moderne UI-iconen, schalen zuiver, accepteren CSS fill, geen gegoochel met background-position.
  • Icoonlettertypen: beperkt, maar nog steeds in gebruik voor piepkleine eenkleurige iconen.
  • Losse bestanden met HTTP/2 of HTTP/3: multiplexing maakt het aantal verzoeken minder belangrijk dan vroeger.

Veelgestelde vragen

De afbeeldingen blijven in je browser. In het traject met meerdere stappen worden de geselecteerde bestanden en de indeling maximaal 30 minuten tijdelijk in dit browsertabblad bewaard. Niets wordt naar een server gestuurd of in de URL gezet.

Ja, maar inline-SVG of SVG-<symbol>-sprites passen meestal beter bij componentframeworks. CSS-sprite sheets komen tot hun recht wanneer veel afbeeldingen tegelijk op statische pagina’s worden getoond.

Zet het aantal kolommen gelijk aan je aantal frames zodat elk frame op één rij staat, en stuur het dan met CSS animation-timing-function: steps(N) en een background-position die cel voor cel verspringt. Werkt goed voor korte lus-animaties (loaders, rusttoestanden).

Elke cel in het raster heeft dezelfde vierkante grootte (de gekozen tegelgrootte), dus elke afbeelding wordt in haar cel gepast en gecentreerd. Zijn je sprites al identieke vierkanten, stel dan de tegelgrootte daarop in en ze gaan ongewijzigd door.

Gerelateerde tools