Waarom GIF's slechts 256 kleuren ondersteunen
Het GIF-formaat werd in 1987 ontworpen, toen 256 kleuren als royaal werden beschouwd voor computerschermen. Het gebruikt 8-bits geïndexeerde kleuren: elke pixel slaat een index op (0–255) die verwijst naar een kleur in een opzoektabel (het palet). Het palet bevat maximaal 256 kleuren, elk gedefinieerd als een RGB-triplet.
Het belangrijkste inzicht: die 256 kleuren kunnen elke 256 kleuren zijn uit de volledige RGB-kleurruimte van 16,7 miljoen. Een GIF van een zonsondergang kan 256 tinten oranje, rood en paars gebruiken. Een GIF van een bos kan 256 tinten groen gebruiken. De uitdaging is het kiezen van de juiste 256 kleuren voor jouw specifieke content.
Waarom de keuze van het palet belangrijk is
Een generiek "web-safe" palet gebruikt een vaste set van 216 kleuren die over het spectrum zijn verdeeld. Voor videocontent levert dit slechte resultaten op omdat de kleuren mogelijk helemaal niet bij je video passen.
Een aangepast palet analyseert de werkelijke pixels in je video en selecteert de 256 kleuren die de content het beste weergeven. De verbetering is dramatisch — kleuren zien er natuurlijk uit, overgangen zijn vloeiender en details blijven behouden.
Onze converter gebruikt de tweefasen-aanpak van FFmpeg: eerst wordt de video geanalyseerd om een optimaal palet te genereren (palettegen), daarna wordt dat palet toegepast om de GIF te maken (paletteuse). Dit levert aanzienlijk betere resultaten op dan éénfase-tools.
Methoden voor palet-generatie
Full-modus (stats_mode=full)
Analyseert alle pixels in alle frames om één globaal palet op te bouwen. Ideaal voor video's met gevarieerde, veranderende content zoals filmfragmenten, actiescènes en muziekvideo's waarbij kleuren per frame variëren.
Diff-modus (stats_mode=diff)
Telt alleen pixels die tussen frames veranderen. Beter voor video's met statische achtergronden zoals schermopnamen, presentaties en talking-head-video's. Produceert kleinere bestanden omdat meer paletposities worden toegewezen aan de veranderende content en minder aan de onveranderde achtergrond.
Single-modus (stats_mode=single)
Maakt voor elk frame een nieuw palet. Biedt de hoogst mogelijke kwaliteit omdat elk frame een geoptimaliseerd palet krijgt, maar levert grotere bestanden op. Ideaal voor fotografische content waarbij kleurnauwkeurigheid cruciaal is.
Afwegingen bij het aantal kleuren
| Kleuren | Kwaliteit | Besparing op grootte | Ideaal voor |
|---|---|---|---|
| 256 | Best mogelijk | Basislijn | Fotografische content |
| 128 | Nauwelijks anders | 15–25 % | Sweet spot voor de meeste content |
| 64 | Lichte banding | 30–45 % | Schermopnamen |
| 32 | Merkbare posterisatie | 45–60 % | Alleen eenvoudige graphics |
| 16 | Aanzienlijke achteruitgang | 60–75 % | Logo's, pixel art |
Dithering: ontbrekende kleuren simuleren
Dithering gebruikt patronen van beschikbare kleuren om kleuren te simuleren die niet in het palet zitten. Het is het verschil tussen harde kleurbanding en vloeiend ogende overgangen.
- Geen dithering: wijst elke pixel toe aan de dichtstbijzijnde paletkleur. Het snelst, kleinste bestanden, maar toont zichtbare banding bij overgangen. Ideaal voor content met vlakke kleuren, zoals logo's en pixel art.
- Bayer (geordend): gebruikt een deterministisch kruisarceringspatroon. Het regelmatige patroon comprimeert goed, wat het de beste keuze maakt wanneer bestandsgrootte cruciaal is. Bij nauwkeurig bekijken licht zichtbaar patroon.
- Floyd-Steinberg (foutdiffusie): verspreidt kwantisatiefouten naar aangrenzende pixels. Levert de meest natuurlijk ogende resultaten voor fotografische content. Grotere bestanden door de willekeurig ogende pixelpatronen.
- Sierra2: verbeterde foutdiffusie met een bredere distributiekernel. Levert resultaten op tussen Floyd-Steinberg en Bayer in zowel kwaliteit als bestandsgrootte. Onze aanbevolen standaard.
Aanbevelingen per type content
| Content | Paletmodus | Kleuren | Dithering |
|---|---|---|---|
| Schermopname | diff | 128 | Bayer |
| Filmfragment | full | 256 | Sierra2 |
| Logo-animatie | full | 64 | Geen |
| Fotografie | single | 256 | Floyd-Steinberg |
Moderne alternatieven met betere kleurondersteuning
Als de 256-kleurenlimiet van GIF onaanvaardbaar is voor jouw content, overweeg dan deze alternatieven:
- WebP-animatie: 24-bits kleur (16,7 M kleuren), volledige alfatransparantie, 50–70 % kleiner dan GIF. Ondersteund door meer dan 97 % van de browsers.
- APNG: volledige PNG-kwaliteit met 24-bits kleur en 8-bits alpha. Zelfde browserondersteuning als WebP. Ideaal wanneer je transparantie met volledige kleur nodig hebt.
- MP4/WebM: miljoenen kleuren, veel kleinere bestanden. Gebruik
<video autoplay loop muted playsinline>op websites.
Vergelijk alle opties in onze vergelijking van geanimeerde formaten.