# Graphics interchange format

GIF (taalkundig gif) is een bestandsformaat voor het opslaan van rasterafbeeldingen in digitale vorm.
GIF is de afkorting van graphics interchange format, een grafische bestandsindeling met pixels. GIF ondersteunt kleuren, verschillende resoluties, animatie en een transparante achtergrond. Het aantal kleuren in een GIF-bestand is meestal beperkt tot 256 (door het gebruik van 8 bits), die elk wel uit 262.144 verschillende gekozen kunnen worden. Er zijn echter uitbreidingen die het gebruik van al die kleuren mogelijk maken.
Compressie vindt plaats op basis van de verdeling en het aantal kleuren in horizontale richting. Indien het een afbeelding is met weinig kleuren en met herhalende patronen dan is goede compressie mogelijk en de bestandsgrootte erg klein. Zijn er veel kleuren of is er dithering toegepast dan loopt de bestandsgrootte op en zijn bestandsformaten als JPEG of PNG met 24 bits per pixel veelal een betere optie.

## Geschiedenis

De GIF-bestandsindeling is geïntroduceerd in 1987 door CompuServe. Vanaf dat moment kwam GIF in algemeen gebruik op het internet vanwege de brede steun en draagbaarheid. GIF werd populair omdat het LZW-compressie gebruikte, welke efficiënter was dan andere compressietechnieken. Hierdoor konden veel afbeeldingen gedownload worden bij een redelijke snelheid, zelfs met langzamere modems. Bij de sterke opkomst van het internet eind jaren 90, begin jaren 00 kwam de bestandsindeling in veel bewegende afbeeldingen op websites voor, maar sindsdien is de populariteit aan het afnemen, omdat er betere alternatieven beschikbaar zijn. Een andere reden is dat bewegende afbeeldingen op websites door veel bezoekers als storend ervaren worden.
De oorspronkelijke versie van het GIF-formaat was 87a. In 1989 kwam CompuServe met een verbeterde versie, genaamd 89a. Deze versie had ondersteuning voor animatievertraging, transparante achtergrondkleuren, specifieke metagegevens en tekstvakken die niet in de afbeelding zelf werden opgeslagen. De twee versies kunnen herkend worden door te kijken naar de eerste 6 bytes van het bestand. Vertaald naar ASCII leest men "GIF87a" of "GIF89a".
Voor de compressie wordt gebruikgemaakt van de LZW-techniek. Unisys had hier een octrooi op, en begon begin jaren 90 betalingen te vragen aan makers van beeldbewerkingsapplicaties en -bibliotheken voor het ondersteunen van het GIF-formaat. Als reactie hierop werden er rechtenvrije alternatieven ontwikkeld zoals ungif (dat het GIF-formaat gebruikt maar zonder compressie) en PNG.
Inmiddels zijn de octrooien van Unisys op LZW verlopen:
* in de Verenigde Staten (No. 4,558,302) op 20 juni 2003;
* in het Verenigd Koninkrijk, Frankrijk, Duitsland en Italië op 18 juni 2004;
* in Japan op 20 juni 2004;
* in Canada op 7 juli 2004.
Volgens een onderzoek van de Free Software Foundation is het laatste relevante octrooi (van IBM) verlopen op 11 augustus 2006.

## Animated GIF

GIF heeft de mogelijkheid om verschillende beelden achter elkaar op te slaan in hetzelfde bestand, waardoor er een animatie kan worden vertoond. Voor wie zo'n afbeelding aantreft en de beelden apart wil bekijken zijn er hulpmiddelen.

## Kleurreductie en dithering

Doordat een GIF-bestand maximaal 256 kleuren kan hebben is het niet erg geschikt voor (kleuren)foto’s. Om toch een foto zo goed mogelijk weer te geven zal het palet van 256 beschikbare kleuren zo goed mogelijk verdeeld moeten worden. Ten eerste moeten de benodigde kleuren zo goed mogelijk gekozen worden uit de mogelijke 262144. In veel beeldbewerkingsprogramma’s kan de gebruiker kiezen uit een aantal vaste paletten of een “optimaal palet”. Algoritmes die een optimaal palet berekenen gaan meestal uit van een driedimensionaal histogram van de in het origineel gebruikte kleuren en splitsen dit op in deelruimtes. Elk van de deelruimtes wordt vervolgens ook weer gesplitst totdat het gewenste aantal deelkleuren bereikt is. Dit leidt automatisch tot de "gemiddeld" meest gebruikte kleuren. Bij een portret zullen bijvoorbeeld meer huidtonen gekozen moeten worden, een landschap als het voorbeeld hieronder bestaat voornamelijk uit blauw- en grijstonen.
Daarnaast kan de schijnbare kleurfout nog verder teruggebracht worden door een techniek die met de Engelse term ‘ditheren’ of ‘error diffusion’ aangeduid wordt. Hierbij wordt de kleur van een enkele pixel niet alleen bepaald door de waarde van de originele pixel, maar ook door de afwijking in kleur van de omliggende pixels. Op die manier ontstaat een ietwat korrelig patroon dat gemiddeld exact de juiste kleuren heeft. Als de afbeelding van zo’n grote afstand bekeken wordt dat individuele pixels niet meer zichtbaar zijn is nauwelijks meer te zien dat het aantal kleuren beperkt is.
Hier staan enkele voorbeelden. Elk programma heeft een andere manier van ditheren. Het origineel bevat zo’n 10.000 verschillende kleuren.
* origineel
* 256 kleuren, met dithering
* 16 kleuren, met dithering
* 2 kleuren, met dithering
* 256 kleuren, zonder dithering
* 16 kleuren, zonder dithering
* 2 kleuren, zonder dithering
De plaatjes met 256 kleuren wijken nauwelijks af van het origineel. Dat komt doordat dit voorbeeld een klein plaatje met een beperkt aantal kleuren is.
Bij de plaatjes met 16 kleuren is te zien dat het rode autootje rechts niet rood is. Bij het kiezen van de 16 kleuren bleek rood niet vaak genoeg voor te komen in het origineel. In plaats daarvan wordt de dichtstbijzijnde kleur gebruikt, het bruingrijs dat in het wegdek voorkomt.
In het voorbeeld met 2 kleuren is het effect van dithering goed te zien.

## Externe link

* Why There Are No GIF files on GNU Web Pages
* ↑ True-Color GIF Example. Gearchiveerd op 3 september 2000. Geraadpleegd op 1 oktober 2010.
* ↑ (en) W3.org, GIF specs. Gearchiveerd op 23 juni 2023.
* ↑ (en) W3.org, GIF89a spec. Gearchiveerd op 7 juli 2023.