GIF's (Graphics Interchange Format) comprimeren bitmaps niet op dezelfde manier als modernere formaten zoals JPEG of PNG. Ze gebruiken een verliesloze compressietechniek genaamd Lempel-Ziv-Welch (LZW) . Hier is een overzicht van hoe het werkt:
1. Paletreductie: GIF's zijn beperkt tot maximaal 256 kleuren. Dit is een cruciale eerste stap. Het algoritme analyseert de kleuren van de bitmap en selecteert de 256 meest representatieve kleuren om een kleurenpalet te creëren. Alle kleuren in de originele bitmap die niet exact overeenkomen met een van deze 256 kleuren, worden benaderd door de dichtstbijzijnde kleur in het palet. Dit is waar een klein verlies aan visuele informatie *kan* optreden, afhankelijk van de complexiteit van de afbeelding, hoewel dit niet op dezelfde manier als compressie met verlies wordt beschouwd als JPEG. Hoe minder kleuren, hoe beter de compressie.
2. LZW-compressie: Nadat de afbeelding naar het palet is verkleind, vindt de daadwerkelijke compressie plaats. LZW is een op woordenboeken gebaseerd algoritme. Het werkt door een woordenboek van zich herhalende kleurreeksen op te bouwen. In plaats van elke pixel afzonderlijk op te slaan, worden verwijzingen naar deze reeksen in het woordenboek opgeslagen. Hoe langer de zich herhalende reeksen, hoe efficiënter de compressie.
Stel je een eenvoudige horizontale lijn van rode pixels voor. In plaats van "rood, rood, rood, rood..." op te slaan, kan LZW iets opslaan als "Sequence A vier keer herhaald", waarbij "Sequence A" in het interne woordenboek wordt gedefinieerd als "rood". Dit vermindert aanzienlijk de hoeveelheid gegevens die nodig is om het beeld weer te geven.
3. De gegevens opslaan: Het uiteindelijke GIF-bestand bevat:
* Koptekst: Informatie over de afbeelding, zoals de afmetingen en het palet.
* Algemene kleurentabel (palet): De 256 kleuren die in de afbeelding worden gebruikt.
* Afbeeldingsgegevens: De gecomprimeerde pixelgegevens, met behulp van de LZW-gecodeerde sequenties.
Waarom GIF niet ideaal is voor alle afbeeldingen:
* Beperkt kleurenpalet: De beperking van 256 kleuren maakt GIF's ongeschikt voor afbeeldingen met vloeiende verlopen of veel kleuren. Ze zien er vaak blokkerig of postervormig uit.
* Geen alfakanaal: GIF's ondersteunen niet inherent transparantie buiten één enkele globale transparantiekleur. Hoewel GIF89a transparante pixels mogelijk maakt, ondersteunt het slechts één transparante kleur.
* Niet ideaal voor fotografie: Vanwege het verliesgevende karakter tijdens de kleurreductiefase en het beperkte kleurenpalet zijn GIF's niet de beste keuze voor foto's. Ze zouden resulteren in een aanzienlijk verlies aan beeldkwaliteit in vergelijking met JPEG of PNG.
Samenvattend werkt GIF-compressie door de kleurinformatie aanzienlijk te verminderen en vervolgens een op woordenboeken gebaseerd algoritme (LZW) te gebruiken om de resterende pixelgegevens efficiënt te coderen, waardoor een kleinere bestandsgrootte wordt bereikt ten koste van soms verlies van kleurprecisie. Het is een verliesvrije methode in termen van de gegevens *na* kleurkwantisering, maar de aanvankelijke kleurreductie brengt een klein verlies met zich mee, afhankelijk van de complexiteit van het beeld. |