Hva er en GIF-fil?
Et GIF eller Graphical Interchange Format er en type svært komprimert bilde. Eid av Unisys, GIF bruker LZW-komprimeringsalgoritmen som ikke forringer bildekvaliteten. For hvert bilde tillater GIF vanligvis opptil 8 biter per piksel og opptil 256 farger er tillatt over hele bildet. I motsetning til et JPEG-bilde, som kan vise opptil 16 millioner farger og temmelig berører grensene for det menneskelige øyet. Da internett dukket opp, forble GIF-er det beste valget fordi de krevde lav båndbredde og kompatible for grafikken som bruker solide fargeområder. En animert GIF kombinerer mange bilder eller rammer til en enkelt fil og viser dem i en sekvens for å generere et animert klipp eller en kort video. Fargebegrensningene er opptil 256 for hver ramme og vil sannsynligvis være minst egnet for å gjengi andre bilder og fotografier med fargegradient.
GIF-filformat
Konseptuelt har GIF-filer et grafisk område med fast størrelse fylt med null eller flere bilder. Noen GIF-filer deler det grafiske området eller blokkene med fast størrelse i underbilder som kan fungere som animerte rammer i tilfelle animert GIF. GIF-formatet bruker pikseldybder på 1 til 8 biter for å lagre punktgrafikkdataene. RGB-fargemodell og palettdata brukes alltid til å lagre bildene. Avhengig av versjonen, definerer en overskrift med fast lengde (“GIF87a” eller “GIF89a”) starten på en typisk GIF-fil.
For øyeblikket er to versjoner av GIF: 87a og 89a tilgjengelige. Førstnevnte er det originale GIF-formatet, mens sistnevnte er det nye GIF-formatet. I dette filformatet er egenskapene til blokkene og pikseldimensjonene nevnt i en logisk skjermbeskrivelse med fast lengde. Eksistensen og størrelsen til en global fargetabell kan spesifiseres av skjermbeskrivelsen, som sporer ytterligere detaljer hvis den finnes. Traileren er den siste byten av filen som inneholder en enkelt byte av et ASCII-semikolon. Et typisk GIF87a-filoppsett er som følger:
Overskrift
Headeren har seks byte og brukes til å spesifisere filtypen som GIF. Selv om den logiske skjermbeskrivelsen er atskilt fra den faktiske overskriften, regnes den noen ganger som den andre overskriften. Samme struktur som brukes til å lagre overskriften kan lagre den logiske skjermbeskrivelsen. Alle GIF-filer starter med 3-byte-signaturen og bruker tegnene “GIF” som en identifikator. Versjonen er også tre byte stor og erklærer versjonen av GIF-filen.
Logisk skjermbeskrivelse
En bildebeskrivelse med fast lengde spesifiserer skjerm- og fargeinformasjonen som er nødvendig for å lage GIF-bildet. Høyde- og Bredde-feltene inneholder den minste verdien av skjermoppløsning, obligatorisk for å vise bildedataene. Hvis skjermenheten ikke er i stand til å vise den spesifiserte oppløsningen, vil det være behov for skalering for å vise bildet på riktig måte. Skjerm- og fargekartinformasjon vises av de fire underfeltene i tabellen nedenfor (mens bit 0 er den minst signifikante biten):
Bits | Subfields |
---|---|
0-2 | Size of the Global Colour Table |
3 | Colour Table Sort Flag |
4-6 | Colour Resolution |
7 | Global Colour Table Flag |
Global fargetabell
En valgfri global fargetabell plasseres rett etter den logiske skjermbeskrivelsen. Denne tabellen er kartlagt for å indeksere pikselfargedataene inne i bildedataene. I fravær av en global fargetabell, bruker hvert bilde i GIF-filen sin lokale farge. Det er bedre å oppgi en standard fargetabell hvis både global og lokal fargetabell mangler. En serie med tre-byte trippel komponerer elementene i fargetabellen. Hver byte karakteriserer en RGB-fargeverdi. De røde, grønne og blå fargene brukes som verdier for hvert fargetabellelement. Oppføringene i den globale fargetabellen treffer maksimalt 256 oppføringer og representerer alltid i en potens av to.
Bildedata
Bildedataene lagrer en byte med ukodede symboler etterfulgt av lenket liste over under- sammen med LZW-kodede data.
Trailer
Trailer representerer enkeltbyte med data som er det siste tegnet i filen. Verdien til denne byten er permanent 3Bh og spesifiserer slutten av datastrømmen. Hver GIF-fil må ha traileren i den siste av hver fil.