GIF

GIF (lühend inglise keele sõnadest "Graphics Interchange Format") on rasterpildi vorming, mille võttis kasutusele ettevõte CompuServe 1987. aastal ning mis on sealtpeale laialdaselt veebis kasutusel tänu heale tehnilisele toele ja lihtsusele.
GIF-vorming toetab igas pildis kuni 8 bitti piksli kohta, mis võimaldab ühel pildil kuni 256 värvi. Samuti toetab GIF-vorming animatsioone, sealjuures iga kaadri kohta värviskaalat (kuni 256 värvi). Värvitoonide skaala piirangud muudavad GIF-vormingu vähem sobivaks piltide taastamiseks või ümbervormindamiseks, pigem sobib GIF-vorming hästi lihtsamate pilte jaoks (logod, ikoonid, liikuvad logod, algelisemate mängude graafika).
GIF-vormingus pildid on pakitud Lempel-Ziv-Welchi (lühendatult LZW) meetodil, mis on universaalne, kadudeta pakkimist võimaldav algoritm. Lempel-Ziv-Welchi meetod lubab vähendada faili mahtu, ilma et pildikvaliteet oluliselt halveneks. Lempel-Ziv-Welchi pakkimise meetod patenteeriti 1985. aastal. Vaidlus litsentsilepingu üle toonaste patenti omavate firmade vahel (Unisys ja CompuServe) tõi kaasa uue GIF-vorminguga sarnase vormingu – PNG loomise 1996. aastal. Vaidlus kestis 2003. aastani, kui vaidlusalused patendid Ameerika Ühendriikides kehtivuse kaotasid.
Ajalugu.
GIF-vormingu töötas välja CompuServe ja avaldas selle 1987. aastal. GIF-vorming oli alternatiiv RLE-vormingule (ingl "Run-length encoding format"), revolutsiooniliseks tegi GIF-vormingu aga värvide tugi (256 värvi), sest RLE-vorming võimaldas luua vaid must-valgeid kujutisi. GIF-vorming leidis kiiresti ülemaailmset kasutust ning võitis populaarsust just tänu Lempel-Ziv-Welchi andmete pakkimise meetodile, mis võrreldes varasema RLE-vorminguga suutis küllaltki suuri pilte pakkida, tehes need märgatavalt kiiremini allalaaditavaks ka tollal kasutusel olnud aeglaste modemitega. Nii sai GIF-vormingust üks kahest populaarseimast vormingust (koos algelisema XBM-vorminguga, mis toetas vaid must-valgeid pilte), mida veebilehtedel kasutati.
GIF-vormingul on kaks versiooni: algne 1987. aastal loodud 87a ja 1989. aastal paljude täiendustega välja antud versioon 89a. Viimase versiooniga lisandus GIF-vormingule läbipaistvate piirkondade võimalus GIF-vormingus ja "interlace"-omadus, mis lubab GIF-vormingus veebilehele üleslaaditud piltide kiiret eelvaadet (laadimise alguses on pilt hägune ning muutub teravamaks vastavalt laadimise edenemisele, see võimaldab ka aeglasema ühenduse puhul otsida soovitud pilte lihtsamalt, ilma neid täielikult laadimata, vaid otsustades eelvaate järgi).
Unisys kaotas 1999. aastal GIF-vormingu litsentsitasud mitteärilistele ettevõtetele ja erakasutajatele. 2003. aastal kaotas kehtivuse Lempel-Ziv-Welchi patent Ameerikas ja 2004. aastal Jaapanis. Ka IBM on litsentseerinud Lempel-Ziv-Welchi algoritmi, kuid pole kasutamise eest tasu nõudnud. Facebooki jõudis GIF-vorming 2015. aastal.
Kvaliteedi parandamine.
GIF-vormingus pildi bittide arv piksli kohta varieerub vahemikus 1–8. Mida rohkem bitte piksli kohta, seda teravam pilt. Tõetruu värvide kujutamine algab aga alates 24 bitist piksli kohta, seega on standardne GIF-vormingus pilt limiteeritud värvidega ning värvipaletti mitte mahtuvad toonid (kuni 256 tooni) kaotatakse ära. Kvaliteedi parandamiseks võimaldavad pilditöötlusprogrammid kasutada pilditöötlusel pseudotoonimist ehk virvtoonimist (ingl "dithering"), mis lubab kasutajal määrata, millist värvitooni olemasolevast spektrist hoitakse suurima visuaalse kvaliteediga. Kvaliteedi parandamisega kaasneb ka failimahu suurenemine, sest GIF-vormindusel kehtib reegel: mida rohkem värve on paletis, seda suurem on pildifail. Teine võimalus visuaalset kvaliteeti tõsta on servade eraldamist teostava lineaarse filtri lisamine, kaotades nii GIF-vormingus pildi "teralise" välimuse ja lisades teravust.
Loomutruu värv.
GIF-vorming piirab bittide arvu pikslis vaid 8 bitini piksli kohta, seega on GIF-vormingus pildid piiratud paletiga, milles saab olla kuni 256 värvi (läbipaistvat tooni kasutades 255 värvi pluss läbipaistev kiht). Ainuüksi 256 värviga ei ole võimalik loomutruusid värve edastada, seega liidetakse mitu GIF-vormingus pilti ühte plokki, mitmekordistades nii võimalike värvide arvu ja võimaldades tõetruu värvi edastamise ka GIF-vormingus failidega.
Teine võimalus tõetruusid värve GIF-vormingus kuvada on kasutada "89a" versiooniga lisandunud läbipaistvat kihti. Kasutades läbipaistvaid kihte saab iga pildi allesjäänud 255 värvi kuhjata üksteise otsa, sellises moel koostatud piltide plokk suudab tänu läbipaistvatele kihtidele edastada rohkem kui 265 värvi, luues efekti tõetruust värvist.
Peamine probleem, mis tõetruu värvi saavutamisega kaasneb, on selles, et iga pildiploki osa nõuab oma värvipaletti, kaotades nii GIF-vorminduse põhiväärtuse – suurte failide oluliselt väiksemaks pakkimise. Teine probleem on pildi kihilisusega kaasnev faili keerukus, mis käib osadele GIF-i viimistlusega tegelevatele programmidele üle jõu. Paljud piltide viimistlusprogrammid tõlgendavad ploki kihte või osasid iseseisvate animeeritud kaadritena ning näitavad neid üksteise järel, mitte üheaegselt, kaotades nii tõetruu värvi efekti. Ka paljudel veebilehtedel on probleeme keerukama, kihilise GIF-vormindusega ning veebibrauser näitab eri kihte väikese viitega ükshaaval.