De zegeningen van GIF

Binnen elke groep mensen zijn er wel een paar van het dinosaurus-type. Zijn ze eenmaal gewend aan iets, dan moet het ook altijd zo blijven. Elke verandering wijzen ze af als onzinnige nieuwlichterij. Zij weten wel beter, zij kunnen wel zonder. Het zijn de mensen die honderd jaar geleden niets in de auto zagen omdat een paard toch ook prima voldeed, het zijn de schrijvers die strak aan de ganzeveer of vulpen vasthouden, de journalisten die de tekstverwerker verwerpen ten gunste van hun vertrouwde schrijfmachine. Het zijn ook de computergebruikers die heel calvinistisch het duistere DOS-werk of kale UNIX-codes blijven prefereren boven moderne grafische schillen.

En net als de dinosaurussen zijn ze gedoemd om uit te sterven, omdat de rest van de wereld, en vooral nieuwkomers, wel degelijk de voordelen van systemen als Windows, OS/2, Linux of Apple Macintosh zien. Plaatjes, mits goed gebruikt, maken de dingen niet alleen gemakkelijker, maar ook aantrekkelijker. En wat zou daar tegen zijn?

Zuinigheid, bijvoorbeeld. Plaatjes vreten ruimte, niet alleen op schijf, maar ook in het werkgeheugen. Er is een macht aan arbeid nodig om zelfs maar een simpel grafisch venster op een scherm te toveren. De standaard-PC van vandaag de dag, met zijn acht megabyte werkgeheugen en zijn enorme harde schijf, verdoet doorgaans de meeste processortijd niet met het uitvoeren van de opdrachten, maar met het verzorgen van het schermbeeld. Met plaatjes maken dus. Is dat erg? Welnee, in de steentijd vergaderden mensen onder een zeiltje op de koude grond, en dat ging uitstekend. Maar vergaderen doen we tegenwoordig toch liever in een centraal verwarmd kantoor op dure stoelen rond een glanzend gepoetste tafel. Strikt rationeel bekeken is dat onzin, maar dat doet er niet toe. Gemak en comfort zijn veel belangrijker dan het kale nut. Natuurlijk is het belangrijk of iets kán, maar net zo belangrijk is of het op een prettige, aantrekkelijke manier kan. Dan functioneren mensen beter. En aan dat nuttige comfort dragen op de computer plaatjes veel bij.

Soms echter bijt het gemaksvoordeel van computerplaatjes in zijn eigen staart. Bijvoorbeeld op het World Wide Web. Langzamerhand veranderen Web-pagina's van strenge lappen tekst in rijk geïllustreerde prentenboeken. Het Web wordt er leuker van, maar de omvang van al dat grafisch geweld gooit roet in het eten. Er moeten zoveel extra gegevens over de toch al overbelaste lijnen gestuurd worden, dat het ophalen van een pagina eindeloos kan duren. Vandaar dat nogal wat heavy users zich tot het dinosaurus-schap bekeerd hebben. Ze zetten in het bladerprogramma waarmee ze het net afstruinen de plaatjes eenvoudig uit. 'Ik kan wel zonder die flauwekul,' zeggen ze dan. Maar ze bedoelen: ik kan er niet op wachten. Zodra er meer bandbreedte beschikbaar komt, zodat het ophalen sneller gaat, zullen veel van die zelfverklaarde dinosaurussen op hun schreden terugkeren.

Waarom bestanden die een plaatje beschrijven groot zijn, is gemakkelijk in te zien. Voor elk beeldpuntje moet je vastleggen welke kleur het moet hebben, en daar heb je in principe drie bytes voor nodig. Eerst één voor de hoeveelheid rood, op een schaal van 1 tot 256, het aantal verschillende waarden dat een byte kan hebben. Daarna nog één voor het groen, en één voor het blauw. Een goedkoop standaard PC-scherm is 640 bij 480 beeldpunten groot, wat betekent dat het beschrijven van een afbeelding ter grootte van dat scherm 921600 bytes vergt, ofwel bijna een megabyte. Nog veel erger wordt het als we praten over plaatjes die gedrukt moeten worden. Voor een beetje behoorlijke kwaliteit moet het aantal puntjes per centimeters veel groter zijn dan het grove raster van het beeldscherm.

In de praktijk zijn plaatjesbestanden weliswaar groot, maar op geen stukken na zo omvangrijk als ze zouden behoren te zijn. Dat komt doordat we doorgaans niet werken met een simpele punt-voor-punt afbeelding van het scherm, maar met een gecomprimeerde versie daarvan. Er zijn heel wat verschillende manieren om dat te doen, daarom zijn er zoveel verschillende typen plaatjesbestanden bestaan: JPG, PCX, WMF, WPG, TIF, GIF, en ga zo maar door. De verschillen in uiteindelijke omvang kunnen enorm zijn, met gewoonlijk JPG en GIF als kampioenen in het minimaliseren. Om een idee te geven, van een 640 x 480 beeldpunten groot plaatje waarin twintig kleuren voorkomen blijft na GIF-compressie maar zo'n tien kilobyte over. Dat is maar ruim één procent van de oorspronkelijke omvang!

Het leeuwedeel van die enorme winst wordt bereikt door de loze ruimte uit een plaatje te knijpen met behulp van een compressie-algoritme. Dat zit zo. In de meeste plaatjes zitten grote stukken die precies hetzelfde er uitzien. Denk maar aan een lappendeken. Je kunt die natuurlijk beschrijven door lijn voor lijn, beeldpunt voor beeldpunt op te sommen wat de kleur ervan is: groen, groen, paars, paars, paars, paars, paars, tot in het oneindige. Maar veel efficiënter is het al wanneer je een beeldlijn beschrijft als 'twee keer groen, 56 keer paars, 44 keer blauw', en zo voort. Zo iets, zij het niet precies op die manier, doen compressie-algoritmen. GIF, de compressiemethode die ontwikkeld werd door Compuserve, gebruikt daarvoor een heel bekend algoritme, het LZW-algoritme, zo genoemd naar de bedenkers ervan, de heren Lempel, Ziv en Welch. Over wat er nog meer in de trukendoos van GIF zit, hebben we het een volgende keer.