GIF:er (grafikutbytesformat) komprimerar inte bitmappar på samma sätt som mer moderna format som JPEG eller PNG. De använder en förlustfri kompressionsteknik som kallas
lempel-ziv-welch (LZW) . Här är en uppdelning av hur det fungerar:
1. palettreduktion: GIF är begränsade till högst 256 färger. Detta är ett avgörande första steg. Algoritmen analyserar bitmappens färger och väljer de 256 mest representativa färgerna för att skapa en färgpalett. Alla färger i den ursprungliga bitmappen som inte exakt matchar en av dessa 256 färger är ungefärliga av den närmaste färgen i paletten. Det är här någon mindre visuell informationsförlust * kan * hända, beroende på bildens komplexitet, även om det inte betraktas som förlustkompression på samma sätt som JPEG. Ju färre färger, desto bättre kompression.
2. LZW -kompression: Efter att ha minskat bilden till paletten sker den faktiska komprimeringen. LZW är en ordboksbaserad algoritm. Det fungerar genom att bygga en ordbok för att upprepa färgsekvenser. Istället för att förvara varje pixel individuellt, lagrar den pekare till dessa sekvenser i ordboken. Ju längre de upprepande sekvenserna, desto effektivare kompressionen.
Föreställ dig en enkel horisontell linje med röda pixlar. Istället för att förvara "röd, röd, röd, röd ...", kan LZW lagra något som "Sekvens A upprepade fyra gånger", där "sekvens A" definieras i sin interna ordbok som "röd". Detta minskar avsevärt mängden data som behövs för att representera bilden.
3. lagring av uppgifterna: Den slutliga GIF -filen innehåller:
* rubrik: Information om bilden, till exempel dess dimensioner och palett.
* Global Color Table (Palette): De 256 färgerna som används i bilden.
* Bilddata: De komprimerade pixeldata med hjälp av de LZW-kodade sekvenserna.
Varför GIF är inte idealisk för alla bilder:
* Begränsad färgpalett: Begränsningen på 256 färg gör GIFs olämpliga för bilder med smidiga lutningar eller många färger. De verkar ofta blockerade eller posteriserade.
* ingen alfakanal: GIF stöder inte i sig transparens utöver en enda global transparensfärg. Medan GIF89A tillåter transparenta pixlar, stöder den bara en transparent färg.
* Inte idealisk för fotografering: På grund av dess förlustiga natur i färgreduktionsfasen och begränsad färgpalett är GIF inte det bästa valet för foton. De skulle resultera i en betydande förlust av bildkvalitet jämfört med JPEG eller PNG.
Sammanfattningsvis fungerar GIF-komprimering genom att avsevärt minska färginformationen och sedan använda en ordboksbaserad algoritm (LZW) för att effektivt koda de återstående pixeldata, uppnå en mindre filstorlek till kostnaden för att ibland förlora färgprecision. Det är en förlustfri metod när det gäller data * efter * färgkvantisering, men den initiala färgreduktionen introducerar mindre förlust beroende på bildkomplexiteten.