GIF

Z Wikipédie, voľnej encyklopédie
Prejsť na navigáciu Prejsť na vyhľadávanie

GIF
Rotujúca zem (veľká).gif
Prípona názvu súboru
.gif
Typ internetového média
image/gif
Zadajte kódGIFf
Uniform Type Identifier (UTI)com.compuserve.gif
Magické čísloGIF87a/GIF89a
VyvinutýCompuServe
Prvotné uvoľnenie15. júna 1987 ; pred 35 rokmi [1] ( 1987-06-15 )
Najnovšie vydanie
89a
1989 ; pred 33 rokmi [2] ( 1989 )
Typ formátubezstratový bitmapový obrazový formát
webové stránkywww .w3 .org /Graphics /GIF /spec-gif89a .txt

Formát Graphics Interchange Format ( GIF ; / ɡ ɪ f / GHIF alebo / ɪ f / JIF , pozri výslovnosť ) je bitmapový obrázkový formát vyvinutý tímom poskytovateľa online služieb CompuServe vedený americkým počítačovým vedcom Steve Wilhite a uvoľnený dňa 15. júna 1987. [1] Je široko používaný na World Wide Web vďaka svojej širokej podpore a prenosnosti medzi aplikáciami a operačnými systémami.

Formát podporuje až 8 bitov na pixel pre každý obrázok, čo umožňuje jednému obrázku odkazovať na vlastnú paletu až 256 rôznych farieb vybraných z 24 - bitového farebného priestoru RGB . Podporuje tiež animácie a umožňuje samostatnú paletu až 256 farieb pre každý snímok. Tieto obmedzenia palety spôsobujú, že GIF je menej vhodný na reprodukciu farebných fotografií a iných obrázkov s farebnými prechodmi , ale je vhodný pre jednoduchšie obrázky, ako sú grafika alebo logá s plnými farebnými oblasťami.

Obrázky GIF sú komprimované pomocou techniky bezstratovej kompresie údajov Lempel–Ziv–Welch (LZW) , aby sa zmenšila veľkosť súboru bez zníženia vizuálnej kvality.

História

CompuServe predstavilo GIF 15. júna 1987, aby poskytlo farebný obrazový formát pre oblasti sťahovania súborov. Toto nahradilo ich skorší formát kódovania , ktorý bol iba čiernobiely. GIF sa stal populárnym, pretože používal kompresiu údajov Lempel–Ziv–Welch . Keďže to bolo efektívnejšie ako kódovanie dĺžky spustenia používané v PCX a MacPaint , pomerne veľké obrázky bolo možné stiahnuť pomerne rýchlo aj s pomalými modemami .

Pôvodná verzia GIF sa volala 87a. [1] Táto verzia už podporovala viacero obrázkov v streame.

V roku 1989 vydal CompuServe vylepšenú verziu s názvom 89a, [2] Táto verzia pridala:

  • podpora oneskorení animácií
  • transparentné farby pozadia
  • ukladanie metadát špecifických pre aplikáciu
  • povoliť textové štítky ako text (nie ich vkladanie do grafických údajov). Keďže existuje malá kontrola nad zobrazovanými písmami, táto funkcia sa používa len zriedka.

Tieto dve verzie je možné rozlíšiť pohľadom na prvých šesť bajtov súboru (" magické číslo " alebo podpis), ktoré, keď sú interpretované ako ASCII , čítajú "GIF87a" alebo "GIF89a".

CompuServe podporil prijatie GIF poskytnutím stiahnuteľných konverzných nástrojov pre mnohé počítače. Do decembra 1987 si napríklad používateľ Apple IIGS mohol prezerať obrázky vytvorené na Atari ST alebo Commodore 64 . [3] GIF bol jedným z prvých dvoch obrazových formátov bežne používaných na webových stránkach, druhým bol čiernobiely XBM . [4]

V septembri 1995 Netscape Navigator 2.0 pridal možnosť pre animované GIFy v slučke .

Zatiaľ čo GIF bol vyvinutý spoločnosťou CompuServe , používal Lempel–Ziv–Welch (LZW) algoritmus bezstratovej kompresie údajov patentovaný spoločnosťou Unisys v roku 1985. Kontroverzia okolo licenčnej zmluvy medzi Unisys a CompuServe v roku 1994 podnietila vývoj prenosnej sieťovej grafiky (PNG). štandardné. V roku 2004 vypršala platnosť všetkých patentov týkajúcich sa proprietárnej kompresie používanej pre GIF.

Funkcia ukladania viacerých obrázkov do jedného súboru spolu s riadiacimi údajmi sa na webe vo veľkej miere využíva na vytváranie jednoduchých animácií .

Voliteľná funkcia prekladania , ktorá ukladá riadky skenovania obrázkov mimo poradia takým spôsobom, že aj čiastočne stiahnutý obrázok bol do istej miery rozpoznateľný, tiež pomohla popularite GIF, [5] pretože používateľ mohol prerušiť sťahovanie, ak to nebolo požadované.

V máji 2015 Facebook pridal podporu pre GIF. [6] [7] V januári 2018 pridal Instagram do režimu príbehu aj nálepky GIF. [8]

Terminológia

Ako podstatné meno sa slovo GIF nachádza v novších vydaniach mnohých slovníkov. V roku 2012 americké krídlo Oxford University Press uznalo GIF aj ako sloveso , čo znamená „vytvoriť súbor GIF“, pretože „GIF bol dokonalým médiom na zdieľanie scén z letných olympijských hier “. Lexikografi tlače to zvolili za slovo roka s tým, že GIF sa vyvinuli na „nástroj so serióznymi aplikáciami vrátane výskumu a žurnalistiky“. [9] [10]

Výslovnosť

Vtipný obrázok oznamujúci spustenie účtu Tumblr pre Biely dom navrhuje vysloviť GIF s tvrdým g .

O výslovnosti prvého písmena GIF sa vedú spory od 90. rokov minulého storočia. Najbežnejšie výslovnosti v angličtine sú / ɪ f / ( počúvať ) (s mäkkým g ako v ginu ) a / ɡ ɪ f / ( počúvať ) (s tvrdým g ako v darčeku ), líšia sa fonémou reprezentovanou písmeno G. _ Tvorcovia formátu vyslovovali skratku GIF ako / ɪf /, smäkkýmg, pričom Wilhite uviedol, že jeho výslovnosť zámerne odrážala americkúznačkuarašidového maslaJifa zamestnanci CompuServe často vtipkovali „vyberaví vývojári si vyberú GIF“, čo je spoof Jifových televíznych reklám. [11]Toto slovo sa však bežne vyslovuje ako/ ɡ ɪ f /, stvrdýmg,[12]a prieskumy vo všeobecnosti ukázali, že táto výslovnosť tvrdágje bežnejšia. [13][14]

Dictionary.com [15] uvádza obe výslovnosti, pričomako primárnu výslovnosť uvádza / ɪ f / , zatiaľ čo Cambridge Dictionary of American English [16] ponúka ibavýslovnosť hard- g . Merriam-Webster's Collegiate Dictionary [17] a Oxford Dictionaries citujú obe výslovnosti, ale na prvé miesto umiestnite tvrdé g : / ɡ ɪ f , ɪ f / . [18] [19] [20] [21] The New Oxford American Dictionary uvádzal iba /ɪ f /vo svojom druhom vydaní[22], ale aktualizoval ho na/ɪ f , ɡ ɪ f / v treťom vydaní. [23]

Nezhoda ohľadom výslovnosti viedla k búrlivej internetovej diskusii. Pri príležitosti získania ceny za celoživotné dielo na slávnostnom odovzdávaní cien Webby v roku 2013 Wilhite verejne odmietol tvrdú výslovnosť ; [12] [24] [25] jeho prejav viedol k viac ako 17 000 príspevkom na Twitteri a desiatkam novinových článkov. [26] Biely dom [12] a televízny program Jeopardy! do debaty vstúpil aj v roku 2013. [25] Vo februári 2020 spoločnosť The JM Smucker Company , majitelia značky Jif, uzavrela partnerstvo s databázou animovaných obrázkov a vyhľadávacím nástrojom Giphyvydať limitovanú edíciu „Jif vs. GIF“ ( hashtaged ako #JIFvsGIF) téglika arašidového masla, ktorý mal štítok vtipne deklarujúci, že mäkká výslovnosť sa vzťahuje výlučne na arašidové maslo a GIF sa vyslovuje výlučne tvrdým - g výslovnosť. [27]

Použitie

Obrázky GIF sú vhodné pre perokresby s ostrými hranami s obmedzeným počtom farieb, ako sú logá. Toto využíva výhodu bezstratovej kompresie formátu, ktorá uprednostňuje ploché oblasti jednotnej farby s dobre definovanými okrajmi. [28] Môžu sa tiež použiť na ukladanie údajov sprite s nízkou farbou pre hry. [29] GIF je možné použiť na malé animácie a videoklipy s nízkym rozlíšením alebo ako reakcie v online správach, ktoré sa používajú na vyjadrenie emócií a pocitov namiesto použitia slov. Sú populárne na platformách sociálnych médií, ako sú Tumblr, [30] Facebook a Twitter. [31]

Formát súboru

Koncepčne súbor GIF popisuje grafickú oblasť s pevnou veľkosťou („logická obrazovka“), ktorá je vyplnená nulou alebo viacerými „obrázkami“. Mnoho súborov GIF má jeden obrázok, ktorý vyplní celú logickú obrazovku. Iné rozdeľujú logickú obrazovku na samostatné podobrazy. Obrázky môžu tiež fungovať ako animačné snímky v animovanom súbore GIF, ale opäť nemusia vyplniť celú logickú obrazovku.

Súbory GIF začínajú hlavičkou s pevnou dĺžkou („GIF87a“ alebo „GIF89a“), ktorá uvádza verziu, po ktorej nasleduje deskriptor logickej obrazovky s pevnou dĺžkou, ktorý uvádza rozmery v pixeloch a ďalšie charakteristiky logickej obrazovky. Deskriptor obrazovky môže tiež špecifikovať prítomnosť a veľkosť globálnej tabuľky farieb (GCT), ktorá nasleduje, ak je prítomná.

Potom je súbor rozdelený na segmenty, z ktorých každý je predstavený 1-bajtovým sentinelom:

  • Obrázok (uvedený 0x2C, čiarka ASCII ',')
  • Rozširujúci blok (uvedený 0x21, výkričník ASCII '!')
  • Upútavka (jeden bajt s hodnotou 0x3B, bodkočiarka ASCII ';'), ktorý by mal byť posledným bajtom súboru.

Obrázok začína deskriptorom obrázka s pevnou dĺžkou, ktorý môže špecifikovať prítomnosť a veľkosť lokálnej tabuľky farieb (ktorá nasleduje ďalej, ak existuje). Nasledujú obrazové dáta: jeden bajt udávajúci bitovú šírku nekódovaných symbolov (ktorý musí byť aspoň 2 bity široký, dokonca aj pre dvojfarebné obrazy), nasledovaný prepojeným zoznamom čiastkových blokov obsahujúcich LZW-kódované dáta.

Bloky rozšírenia (bloky, ktoré „rozširujú“ definíciu 87a prostredníctvom mechanizmu už definovaného v špecifikácii 87a) pozostávajú z sentinelu, dodatočného bajtu špecifikujúceho typ rozšírenia a prepojeného zoznamu podblokov s údajmi rozšírenia. Bloky rozšírení, ktoré upravujú obrázok (ako napríklad rozšírenie ovládania grafiky, ktoré špecifikuje voliteľný čas oneskorenia animácie a voliteľnú priehľadnú farbu pozadia), musia bezprostredne predchádzať segmentu s obrázkom, na ktorý odkazujú.

Prepojené zoznamy používané obrazovými dátami a rozširujúcimi blokmi pozostávajú zo série čiastkových blokov, pričom každý čiastkový blok začína bajtom, ktorý udáva počet nasledujúcich dátových bajtov v čiastkovom bloku (1 až 255). Séria podblokov je ukončená prázdnym podblokom (0 bajtov).

Táto štruktúra umožňuje analyzovať súbor, aj keď nie sú pochopené všetky časti. GIF s označením 87a môže obsahovať rozširujúce bloky; zámerom je, aby dekodér mohol čítať a zobrazovať súbor bez funkcií pokrytých príponami, ktorým nerozumie.

Všetky podrobnosti o formáte súboru sú uvedené v špecifikácii GIF. [2]

Palety

Príklad obrázka GIF uloženého pomocou webovej palety a rozloženého pomocou Floyd-Steinbergovej metódy. V dôsledku zníženého počtu farieb na obrázku sa vyskytujú problémy so zobrazením.

GIF je založený na palete: farby použité v obrázku (rámci) v súbore majú svoje hodnoty RGB definované v tabuľke palety , ktorá môže obsahovať až 256 položiek, a údaje pre obrázok sa vzťahujú na farby podľa ich indexov ( 0–255) v tabuľke paliet. Definície farieb v palete možno čerpať z farebného priestoru miliónov odtieňov (2 24 odtieňov, 8 bitov pre každý primárny), ale maximálny počet farieb, ktoré môže rám použiť, je 256. Toto obmedzenie sa zdalo rozumné, keď sa vyvíjal GIF. pretože len málo ľudí si mohlo dovoliť hardvér na zobrazenie viacerých farieb súčasne. Jednoduchá grafika, perokresby, karikatúry a fotografie v odtieňoch šedej zvyčajne potrebujú menej ako 256 farieb.

Každý snímok môže označiť jeden index ako „priehľadnú farbu pozadia“: každý pixel priradený tomuto indexu prevezme farbu pixelu v rovnakej polohe od pozadia, ktorá mohla byť určená predchádzajúcim snímkom animácie.

Mnoho techník, spoločne nazývaných dithering , bolo vyvinutých na aproximáciu širšieho rozsahu farieb s malou farebnou paletou pomocou pixelov dvoch alebo viacerých farieb na aproximáciu farieb medzi nimi. Tieto techniky obetujú priestorové rozlíšenie, aby sa priblížili hlbšiemu farebnému rozlíšeniu. Hoci rozklad nie je súčasťou špecifikácie GIF, možno ho použiť v obrázkoch následne zakódovaných ako obrázky GIF. Toto často nie je ideálne riešenie pre obrázky GIF, pretože strata priestorového rozlíšenia zvyčajne spôsobuje, že obrázok vyzerá na obrazovke rozmazane, a pretože vzory rozkladu často narúšajú komprimovateľnosť obrazových údajov, čo je v rozpore s hlavným účelom GIF.

V začiatkoch grafických webových prehliadačov [ kedy? ] , grafické karty s 8-bitovými vyrovnávacími pamäťami (umožňujúcimi iba 256 farieb) boli bežné a bolo celkom bežné vytvárať obrázky GIF pomocou webovej palety . [ podľa koho? ] Toto zabezpečilo predvídateľné zobrazenie, ale výrazne obmedzilo výber farieb. Keď sa 24-bitové farby stali štandardom, palety mohli byť namiesto toho naplnené optimálnymi farbami pre jednotlivé obrázky.

Pre malé obrázky môže stačiť malá tabuľka farieb a malá tabuľka farieb umožňuje rýchlejšie sťahovanie súboru. Špecifikácie 87a aj 89a umožňujú farebné tabuľky s 2 n farbami pre ľubovoľné n od 1 do 8. Väčšina grafických aplikácií dokáže čítať a zobrazovať obrázky GIF s akoukoľvek z týchto veľkostí tabuľky; niektoré však pri vytváraní obrázkov nepodporujú všetky veľkosti . Široko podporované sú tabuľky s 2, 16 a 256 farbami.

Skutočná farba

Aj keď sa GIF takmer nikdy nepoužíva pre obrázky s vernými farbami , je to možné. [32] [33] Obrázok GIF môže obsahovať viacero obrázkových blokov, z ktorých každý môže mať svoju vlastnú 256-farebnú paletu a bloky môžu byť usporiadané tak, aby vytvorili úplný obrázok. Alternatívne špecifikácia GIF89a zaviedla myšlienku „priehľadnej“ farby, kde každý blok obrázka môže obsahovať vlastnú paletu 255 viditeľných farieb plus jednu priehľadnú farbu. Kompletný obraz možno vytvoriť vrstvením obrazových blokov, pričom viditeľná časť každej vrstvy je zobrazená cez priehľadné časti vrstiev nad nimi.

Animovaný obrázok GIF znázorňujúci techniku ​​zobrazovania viac než typického limitu 256 farieb

Ak chcete vykresliť plnofarebný obrázok ako GIF, pôvodný obrázok musí byť rozdelený na menšie oblasti, ktoré nemajú viac ako 255 alebo 256 rôznych farieb. Každá z týchto oblastí je potom uložená ako samostatný obrazový blok s vlastnou lokálnou paletou a keď sú obrazové bloky zobrazené spolu (buď usporiadaním alebo vrstvením čiastočne priehľadných obrazových blokov), objaví sa kompletný, plnofarebný obraz. Napríklad rozdelenie obrázka na dlaždice s rozmermi 16 x 16 pixelov (spolu 256 pixelov) zaisťuje, že žiadna dlaždica nebude mať viac ako lokálny limit 256 farieb, hoci možno použiť väčšie dlaždice a podobné farby zlúčiť, čo vedie k určitej strate farby. informácie. [32]

Keďže každý blok obrázka môže mať svoju vlastnú lokálnu tabuľku farieb, súbor GIF s mnohými blokmi obrázkov môže byť veľmi veľký, čo obmedzuje užitočnosť plnofarebných obrázkov GIF. [33] Okrem toho nie všetky programy na vykresľovanie GIF spracovávajú dlaždicové alebo vrstvené obrázky správne. Mnoho vykresľovacích programov interpretuje dlaždice alebo vrstvy ako snímky animácie a zobrazuje ich postupne ako animáciu [32], pričom väčšina webových prehliadačov snímky automaticky zobrazuje s oneskorením 0,1 sekundy alebo viac. [34] [35] [ je potrebný lepší zdroj ]

Príklad súboru GIF

Microsoft Paint uloží malý čiernobiely obrázok ako nasledujúci súbor GIF (ilustrovaný zväčšený).
Farba nevyužíva GIF optimálne; kvôli zbytočne veľkej tabuľke farieb (ukladá celých 256 farieb namiesto použitých 2) a šírke symbolu tento súbor GIF nie je efektívnym znázornením 15-pixelového obrázka.
Hoci blok Graphic Control Extension deklaruje farebný index 16 (hexadecimálne 10) za transparentný, tento index sa v obrázku nepoužíva. Jediné farebné indexy, ktoré sa objavujú v obrazových údajoch, sú desiatkové 40 a 255, ktoré globálna tabuľka farieb mapuje na čiernu a bielu.
GifSample.gif

Ukážkový obrázok (zväčšený), skutočná veľkosť 3 pixely na šírku a 5 na výšku

Všimnite si, že hexadecimálne čísla v nasledujúcich tabuľkách sú v poradí bajtov typu little-endian , ako to predpisuje špecifikácia formátu.

Tabuľka vzorových hodnôt obrázkov GIF
Bajt # (hex) Hexadecimálne Text alebo hodnota Význam
0 47 49 46 38 39 61 GIF89a Hlavička
6 03 00 3 Logická šírka obrazovky
8 05 00 5 Logická výška obrazovky
A F7 Nasleduje GCT pre 256 farieb s rozlíšením 3  ×  8 bitov/primárny, najnižšie 3 bity predstavujú bitovú hĺbku mínus 1, najvyšší skutočný bit znamená, že je prítomný GCT
B 00 0 Farba pozadia: index #0; #000000 čierna
C 00 0 Predvolený pomer strán pixelov, 0:0
D 00 00 00
R (červená) G (zelená) B (modrá)
0 0 0
Globálna tabuľka farieb, farba #0: #000000, čierna
Bajty D h až 30 C h v príklade definujú paletu 256 farieb.
10 80 00 00
R (červená) G (zelená) B (modrá)
128 0 0
Globálna tabuľka farieb, farba #1: priehľadný bit, na obrázku sa nepoužíva
... ... ... Globálna tabuľka farieb sa rozširuje na 30A
30A FF FF FF
R (červená) G (zelená) B (modrá)
255 255 255
Globálna tabuľka farieb, farba #255: #ffffff, biela
30D 21 F9 Rozšírenie ovládania grafiky (vo väčšine súborov sú pred ním polia komentárov)
30F 04 4 Množstvo údajov GCE, 4 bajty
310 01 Priehľadná farba pozadia; toto je bitové pole, najnižší bit znamená transparentnosť
311 00 00 Oneskorenie animácie v stotinách sekundy; nepoužité
313 10 16 Číslo farby priehľadného pixelu v GCT
314 00 Koniec GCE bloku
315 2C Popisovač obrázka
316 00 00 00 00 (0, 0) Severozápadná rohová poloha obrazu na logickej obrazovke
31A 03 00 05 00 (3, 5) Šírka a výška obrázka v pixeloch
31E 00 0 Miestny bit tabuľky farieb, 0 znamená žiadny
31F 08 8 Začiatok obrázka, minimálna veľkosť kódu LZW
320 0B 11 Množstvo nasledujúceho obrázka zakódovaného LZW, 11 bajtov
321 00 51 FC 1B 28 70 A0 C1 83 01 01 <obrázkové údaje> 11 bajtov obrazových údajov, pozri pole 320
32C 00 0 Koniec bloku obrazových údajov
32D 3B Ukončenie súboru

Kódovanie obrázkov

Údaje obrazových pixelov, naskenované vodorovne zľava hore, sa konvertujú pomocou kódovania LZW na kódy, ktoré sa potom mapujú do bajtov na uloženie do súboru. Kódy pixelov sa zvyčajne nezhodujú s 8-bitovou veľkosťou bajtov, takže kódy sú zbalené do bajtov podľa schémy „little-Endian“: najmenej významný bit prvého kódu je uložený v najmenej významnom bite prvý bajt, bity kódu vyššieho rádu na bity vyššieho rádu bajtu, ktoré sa podľa potreby prelievajú do bitov nižšieho rádu nasledujúceho bajtu. Každý nasledujúci kód je uložený počínajúc od najmenej významného bitu, ktorý ešte nebol použitý.

Tento bajtový prúd je uložený v súbore ako séria „podblokov“. Každý podblok má maximálnu dĺžku 255 bajtov a má predponu bajt označujúci počet dátových bajtov v podbloku. Séria podblokov je ukončená prázdnym podblokom (jeden 0 bajt, ktorý označuje podblok s 0 dátovými bajtmi).

Pre vzorový obrázok vyššie je nižšie zobrazené reverzibilné mapovanie medzi 9-bitovými kódmi a bajtmi.

Reverzibilné mapovanie
9-bitový kód Byte
Hexadecimálne Binárne Binárne Hexadecimálne
100 1 000 000 000 00000000 00
028 00 0101 000 0101000 1 51
0FF 011 111111 111111 00 FC
103 1000 00011 00011 011 1B
102 10 000 0010 0010 1000 28
103 100 000 011 011 10 000 70
106 1000001 10 10 100 000 A0
107 10000011 1 1 1000 001 C1
10000011 83
101 1 00000001 00000001 01
0000000 1 01

Je zrejmá mierna kompresia: farby pixelov pôvodne definované 15 bajtmi sú presne reprezentované 12 kódovými bajtmi vrátane riadiacich kódov. Proces kódovania, ktorý vytvára 9-bitové kódy, je uvedený nižšie. Lokálny reťazec akumuluje čísla farieb pixelov z palety bez výstupnej akcie, pokiaľ lokálny reťazec nájdete v kódovej tabuľke. Existuje špeciálna úprava prvých dvoch pixelov, ktoré prichádzajú predtým, ako tabuľka narastie zo svojej pôvodnej veľkosti pridaním reťazcov. Po každom výstupnom kóde sa lokálny reťazec inicializuje na najnovšiu farbu pixelov (ktorá nemohla byť zahrnutá do výstupného kódu).

                          Tabuľka 9-bitový 
                     reťazec --> kód kódu Akcia
                          #0 | 000h Inicializácia koreňovej tabuľky 9-bitových kódov
                    paleta | :
                     farby | :
                        #255 | 0FFh
                         clr | 100 hod
                         koniec | 101 hod
                             | 100 h Jasno
Pixel Local |
farba Paletový reťazec |
ČIERNA #40 28 | 028h 1. pixel vždy na výstup
BIELA ​​#255 FF | Reťazec nájdený v tabuľke
                  28 FF | 102h Vždy pridajte 1. reťazec do tabuľky
               FF | Inicializujte lokálny reťazec
BIELA ​​#255 FF FF | Reťazec sa nenašiel v tabuľke
                             | 0FFh - výstupný kód pre predchádzajúci reťazec
                  FF FF | 103h - pridajte najnovší reťazec do tabuľky
               FF | - inicializovať lokálny reťazec
BIELA ​​#255 FF FF | Reťazec nájdený v tabuľke
ČIERNA #40 FF FF 28 | Reťazec sa nenašiel v tabuľke
                             | 103h - výstupný kód pre predchádzajúci reťazec
                  FF FF 28 | 104h - pridať najnovší reťazec do tabuľky
               28 | - inicializovať lokálny reťazec
BIELA ​​#255 28 FF | Reťazec nájdený v tabuľke
BIELA ​​#255 28 FF FF | Reťazec sa nenašiel v tabuľke
                             | 102h - výstupný kód pre predchádzajúci reťazec
                  28 FF FF | 105h - pridať posledný reťazec do tabuľky
               FF | - inicializovať lokálny reťazec
BIELA ​​#255 FF FF | Reťazec nájdený v tabuľke
BIELA ​​#255 FF FF FF | Reťazec sa nenašiel v tabuľke
                             | 103h - výstupný kód pre predchádzajúci reťazec
                  FF FF FF | 106h - pridajte najnovší reťazec do tabuľky
               FF | - inicializovať lokálny reťazec
BIELA ​​#255 FF FF | Reťazec nájdený v tabuľke
BIELA ​​#255 FF FF FF | Reťazec nájdený v tabuľke
BIELA ​​#255 FF FF FF FF | Reťazec sa nenašiel v tabuľke
                             | 106h - výstupný kód pre predchádzajúci reťazec
                  FF FF FF FF| 107h - pridajte najnovší reťazec do tabuľky
               FF | - inicializovať lokálny reťazec
BIELA ​​#255 FF FF | Reťazec nájdený v tabuľke
BIELA ​​#255 FF FF FF | Reťazec nájdený v tabuľke
BIELA ​​#255 FF FF FF FF | Reťazec nájdený v tabuľke
                                                   Už žiadne pixely
                                          107h - výstupný kód pre posledný reťazec
                                          Koniec 101h

Kvôli prehľadnosti je tabuľka zobrazená vyššie ako zostavená zo strún s narastajúcou dĺžkou. Táto schéma môže fungovať, ale tabuľka spotrebuje nepredvídateľné množstvo pamäte. Pamäť možno v praxi ušetriť tak, že každý nový reťazec, ktorý sa má uložiť, pozostáva z predtým uloženého reťazca rozšíreného o jeden znak. Je ekonomické uložiť na každej adrese iba dve slová: existujúcu adresu a jeden znak.

Algoritmus LZW vyžaduje vyhľadávanie v tabuľke pre každý pixel. Lineárne vyhľadávanie až 4096 adries by spomalilo kódovanie. V praxi môžu byť kódy uložené v poradí podľa číselnej hodnoty; to umožňuje, aby sa každé vyhľadávanie vykonalo pomocou registra postupnej aproximácie (Successive Approximation Register, ako sa používa v niektorých ADC ) s iba 12 porovnávaním magnitúdy. Pre túto efektivitu je potrebná ďalšia tabuľka na prevod medzi kódmi a skutočnými adresami pamäte; extra udržiavanie tabuľky je potrebné iba vtedy, keď je uložený nový kód, čo sa deje oveľa nižšou rýchlosťou, ako je pixelová rýchlosť.

Dekódovanie obrázkov

Dekódovanie začína mapovaním uložených bajtov späť na 9-bitové kódy. Tieto sa dekódujú, aby sa obnovili farby pixelov, ako je uvedené nižšie. Tabuľka identická s tabuľkou použitou v kódovači sa vytvorí pridaním reťazcov podľa tohto pravidla:

Nájde sa prichádzajúci kód v tabuľke?
Áno pridajte reťazec pre lokálny kód, za ktorým nasleduje prvý bajt reťazca pre prichádzajúci kód
Nie pridajte reťazec pre lokálny kód nasledovaný kópiou jeho vlastného prvého bajtu
      shift 
9-bit ----> Local Table Pixel 
code code code --> string color Palette color Action
100h 000h | #0 Inicializujte koreňovú tabuľku 9-bitových kódov
                    : | paleta
                    : | farby
                   0FFh | #255
                   100 h | clr
                   101 h | koniec
028h | #40    ČIERNA   Dekódovanie 1. pixelu
0FFh 028h | V tabuľke sa našiel prichádzajúci kód
                         | #255   WHITE    - výstupný reťazec z tabuľky
                   102 h | 28 FF - pridať do tabuľky
103h 0FFh | Prichádzajúci kód sa v tabuľke nenašiel
                   103 h | FF FF - pridať do tabuľky
                         | - výstupný reťazec z tabuľky
                         | #255   BIELA 
                         ​​| #255   BIELA
102 h 103 h | V tabuľke sa našiel prichádzajúci kód
                         | - výstupný reťazec z tabuľky
                         | #40    ČIERNA 
                         | #255   BIELA
                   104 h | FF FF 28 - doplňte do tabuľky
103h 102h | V tabuľke sa našiel prichádzajúci kód
                         | - výstupný reťazec z tabuľky
                         | #255   BIELA 
                         ​​| #255   BIELA
                   105 h | 28 FF FF - doplňte do tabuľky
106h 103h | Prichádzajúci kód sa v tabuľke nenašiel
                   106 h | FF FF FF - pridať do tabuľky
                         | - výstupný reťazec z tabuľky
                         | #255   BIELA 
                         ​​| #255   BIELA 
                         ​​| #255   BIELA
107h 106h | Prichádzajúci kód sa v tabuľke nenašiel
                   107 h | FF FF FF FF - pridať do tabuľky
                         | - výstupný reťazec z tabuľky
                         | #255   BIELA 
                         ​​| #255   BIELA 
                         ​​| #255   BIELA 
                         ​​| #255   BIELA
101 h | Koniec

Dĺžka kódu LZW

Kratšie dĺžky kódu možno použiť pre palety menšie ako 256 farieb v príklade. Ak má paleta iba 64 farieb (takže farebné indexy sú široké 6 bitov), ​​symboly sa môžu pohybovať od 0 do 63 a šírka symbolu môže byť 6 bitov, pričom kódy začínajú na 7 bitoch. V skutočnosti šírka symbolu nemusí zodpovedať veľkosti palety: pokiaľ sú dekódované hodnoty vždy menšie ako počet farieb v palete, symboly môžu mať ľubovoľnú šírku od 2 do 8 a veľkosť palety ľubovoľnú mocninu 2. od 2 do 256. Napríklad, ak sa použijú len prvé štyri farby (hodnoty 0 až 3) palety, symboly možno považovať za 2 bity široké s kódmi začínajúcimi na 3 bitoch.

Naopak, šírka symbolu môže byť nastavená na 8, aj keď sú použité iba hodnoty 0 a 1; tieto údaje by vyžadovali iba dvojfarebnú tabuľku. Hoci by nemalo zmysel kódovať súbor týmto spôsobom, niečo podobné sa zvyčajne deje pre dvojfarebné obrázky: minimálna šírka symbolu je 2, aj keď sa používajú iba hodnoty 0 a 1.

Kódová tabuľka spočiatku obsahuje kódy, ktoré sú o jeden bit dlhšie ako veľkosť symbolu, aby sa do nej zmestili dva špeciálne kódy clr a end a kódy pre reťazce, ktoré sa pridávajú počas procesu. Keď je tabuľka plná, dĺžka kódu sa zväčšuje, aby sa vytvoril priestor pre viac reťazcov, až po maximálny kód 4095 = FFF(hex). Keď dekodér vytvára svoju tabuľku, sleduje tieto nárasty dĺžky kódu a je schopný podľa toho rozbaliť prichádzajúce bajty.

Nekomprimovaný GIF

Dizajn prikrývky ako 46x46 nekomprimovaný GIF.gif

46×46 nekomprimovaný GIF so 7-bitovými symbolmi (128 farieb, 8-bitové kódy).
Kliknutím na obrázok zobrazíte vysvetlenie kódu.

Proces kódovania GIF je možné upraviť tak, aby sa vytvoril súbor bez kompresie LZW, ktorý je stále možné zobraziť ako obrázok GIF. Táto technika bola pôvodne zavedená ako spôsob, ako sa vyhnúť porušovaniu patentov. Nekomprimovaný GIF môže byť tiež užitočným medziformátom pre grafického programátora, pretože jednotlivé pixely sú prístupné na čítanie alebo maľovanie. Nekomprimovaný súbor GIF je možné previesť na obyčajný súbor GIF jednoduchým prechodom cez editor obrázkov.

Modifikovaná metóda kódovania ignoruje vytváranie tabuľky LZW a vysiela iba kódy koreňovej palety a kódy pre CLEAR a STOP. Výsledkom je jednoduchšie kódovanie (zhoda 1:1 medzi hodnotami kódu a kódmi paliet), ale obetuje sa všetka kompresia: každý pixel v obrázku generuje výstupný kód označujúci jeho farebný index. Pri spracovaní nekomprimovaného GIF nebude štandardnému dekodéru GIF brániť v zapisovaní reťazcov do jeho slovníkovej tabuľky, ale šírka kódu sa nikdy nesmie zväčšiť, pretože to spustí iné balenie bitov do bajtov.

Ak je šírka symbolu n , kódy šírky n + 1 prirodzene spadajú do dvoch blokov: spodný blok 2 n kódov na kódovanie jednotlivých symbolov a horný blok 2 n kódov, ktoré použije dekodér pre sekvencie dĺžka väčšia ako jedna. Z tohto horného bloku sú už prijaté prvé dva kódy: 2 n pre CLEAR a 2 n + 1 pre STOP. Dekodéru je tiež potrebné zabrániť v použití posledného kódu v hornom bloku, 2 n + 1 − 1 , pretože keď dekodér zaplní tento slot, zväčší šírku kódu. Teda v hornom bloku sú2 n − 3 kódov dostupných pre dekodér, ktoré nespustia zväčšenie šírky kódu. Pretože dekodér je pri udržiavaní tabuľky vždy o krok pozadu, negeneruje záznam tabuľky po prijatí prvého kódu z kodéra, ale vygeneruje ho pre každý nasledujúci kód. Kódovač teda môže generovať 2 n − 2 kódov bez spustenia zväčšenia šírky kódu. Preto musí kódovač vysielať dodatočné kódy CLEAR v intervaloch 2 n − 2 kódov alebo menej, aby dekodér resetoval kódovací slovník. Štandard GIF umožňuje vloženie takýchto dodatočných kódov CLEAR do obrazových údajov kedykoľvek. Kompozitný dátový tok je rozdelený do podblokov, z ktorých každý má od 1 do 255 bajtov.

Pre vyššie uvedený vzorový obrázok 3×5 predstavujú nasledujúce 9-bitové kódy „čistý“ (100), po ktorom nasledujú obrazové pixely v poradí skenovania a „zastavenie“ (101).

100 028 0FF 0FF 0FF 028 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 101

Po mapovaní vyššie uvedených kódov na bajty sa nekomprimovaný súbor líši od komprimovaného súboru takto:

Bajt # (hex) Hexadecimálne Text alebo hodnota Význam
320 14 20 Nasledujú 20 bajtové nekomprimované obrazové dáta
321 00 51 FC FB F7 0F C5 BF 7F FF FE FD FB F7 EF DF BF 7F 01 01
335 00 0 Koniec obrazových údajov

Príklad kompresie

Triviálny príklad veľkého obrázka plnej farby demonštruje kompresiu LZW s premenlivou dĺžkou používanú v súboroch GIF.

Ukážka kompresie súboru GIF
kód pixelov Poznámky
Nie
N i
Hodnota
Nj + 256
Dĺžka
(bity)
Tento kód
N i
Nahromadený
N i (N i + 1)/2
Vzťahy používajúce N i sa vzťahujú iba na pixely rovnakej farby, kým nie je plná kódovacia tabuľka.
0 100 hod 9 Vymazať tabuľku kódov
1 FFh 1 1 Farba ľavého horného pixelu vybraná ako najvyšší index z 256-farebnej palety
2 102 hod 2 3
3
255
103 hod
1FFh
3
255
6
32640
Posledný 9-bitový kód
256
767
200 hod
3FFh
10 256
767
32896
294528
Posledný 10-bitový kód
768
1791
400 hod
7FFh
11 768
1791
295296
1604736
Posledný 11-bitový kód
1792
3839
800 hod
FFFh
12 1792
3839
1606528
7370880
Tabuľka kódov je plná
FFFh 3839 Maximálny kód sa môže opakovať pre viac pixelov rovnakej farby.
Celková kompresia údajov sa asymptoticky blíži k 3839 ×8/12= 2559+1/3
101 hod Koniec obrazových údajov

Zobrazené hodnoty kódu sú zbalené do bajtov, ktoré sú potom zbalené do blokov s veľkosťou až 255 bajtov. Blok obrazových údajov začína bajtom, ktorý deklaruje počet bajtov, ktoré majú nasledovať. Posledný blok údajov pre obrázok je označený bajtom s nulovou dĺžkou bloku.

Prekladanie

Špecifikácia GIF umožňuje každému obrázku v rámci logickej obrazovky súboru GIF určiť, že je prekladaný; tj že poradie rastrových riadkov v jeho dátovom bloku nie je sekvenčné. To umožňuje čiastočné zobrazenie obrazu, ktorý možno rozpoznať pred vymaľovaním celého obrazu.

Prekladaný obrázok je rozdelený zhora nadol na pásy vysoké 8 pixelov a riadky obrázku sú zobrazené v nasledujúcom poradí:

  • Prechod 1: Riadok 0 (najvyšší riadok) z každého prúžku.
  • Priechod 2: Riadok 4 z každého prúžku.
  • Priechod 3: Riadky 2 a 6 z každého prúžku.
  • Priechod 4: Riadky 1, 3, 5 a 7 z každého prúžku.

Pixely v každom riadku nie sú prekladané, ale sú zobrazené postupne zľava doprava. Rovnako ako pri neprekladaných obrázkoch neexistuje žiadna prestávka medzi údajmi pre jeden riadok a údajmi pre nasledujúci riadok. Indikátor, že obraz je prekladaný, je bit nastavený v príslušnom bloku deskriptora obrazu.

Animovaný GIF

GIF možno použiť na zobrazenie animácie, ako na tomto obrázku Newtonovej kolísky .
Animácia GIF vytvorená z dvoch fotografií, z ktorých jedna sa mení na druhú

Hoci GIF nebol navrhnutý ako animačné médium, jeho schopnosť uložiť viacero obrázkov do jedného súboru prirodzene nabádala použiť tento formát na ukladanie snímok animačnej sekvencie. Aby sa uľahčilo zobrazovanie animácií, špecifikácia GIF89a pridala rozšírenie Graphic Control Extension (GCE), ktoré umožňuje maľovať obrázky (snímky) v súbore s časovým oneskorením, čím sa vytvorí videoklip .. Každá snímka v animácii GIF je predstavená vlastným GCE, ktorý špecifikuje časové oneskorenie po nakreslení snímky. Globálne informácie na začiatku súboru sa štandardne vzťahujú na všetky snímky. Údaje sú orientované na prúd, takže posun súboru začiatku každého GCE závisí od dĺžky predchádzajúcich údajov. V rámci každého rámca sú obrazové dáta kódované LZW usporiadané do čiastkových blokov s veľkosťou až 255 bajtov; veľkosť každého podbloku je deklarovaná bajtom, ktorý mu predchádza.

V predvolenom nastavení animácia zobrazuje sekvenciu snímok iba raz, pričom sa zastaví, keď sa zobrazí posledná snímka. Aby sa animácia zacyklila, Netscape v 90-tych rokoch použil blok Application Extension (určený na to, aby umožnil dodávateľom pridať informácie špecifické pre aplikáciu do súboru GIF) na implementáciu Netscape Application Block (NAB). [36] Tento blok, umiestnený bezprostredne pred sekvenciou snímok animácie, určuje, koľkokrát sa má sekvencia snímok prehrať (1 až 65535 krát) alebo koľkokrát sa má opakovať nepretržite (nula označuje cyklus navždy). Podpora týchto opakujúcich sa animácií sa prvýkrát objavila vo verzii Netscape Navigator 2.0 a potom sa rozšírila do ďalších prehliadačov. [37]Väčšina prehliadačov teraz rozpoznáva a podporuje NAB, hoci to nie je striktne súčasťou špecifikácie GIF89a.

Nasledujúci príklad ukazuje štruktúru súboru animácie Rotujúca zem (veľký).gif zobrazený (ako miniatúra) v informačnom poli článku.

Štruktúra GIF
Bajt # (hex) Hexadecimálne Text alebo hodnota Význam
0 47 49 46 38 39 61 GIF89a Logický deskriptor obrazovky
6 90 01 400 Šírka v pixeloch
8 90 01 400 Výška v pixeloch
A F7 Nasleduje GCT pre 256 farieb s rozlíšením 3  ×  8 bitov/primárne
B 00 0 Farba pozadia: #000000, čierna
C 00 0 Predvolený pomer strán pixelov, 0:0
D 00 Globálna tabuľka farieb
30D 21 FF Rozšírenie aplikácie
30F 0B 11 Veľkosť bloku vrátane názvu aplikácie a overovacích bajtov (vždy 11)
310 4E 45 54 53 43 41 50 45 32 2E 30 NETSCAPE2.0 8-bajtový názov aplikácie plus 3 overovacie bajty
31B 03 3 Počet bajtov v nasledujúcom podbloku
31C 01 1 Index aktuálneho podbloku údajov (vždy 1 pre blok NETSCAPE)
31D FF FF 65535 Počet opakovaní bez znamienka
31F 00 Koniec reťazca podblokov pre blok Application Extension
320 21 F9 Rozšírenie ovládania grafiky pre rám #1
322 04 4 Počet bajtov (4) v aktuálnom podbloku
323 04
000.....
...001..
......0.
........0
(rozdelené na časti pre ľahšie čítanie)
Vyhradených, 5 nižších bitov je bitové pole
Metóda likvidácie 1: nelikvidovať
Žiadny používateľský vstup
Priehľadná farba, 0 znamená neudelené
324 09 00 9 Oneskorenie snímky: oneskorenie 0,09 sekundy pred maľovaním ďalšej snímky
326 FF Priehľadný farebný index (nepoužitý v tomto ráme)
327 00 Koniec reťaze podblokov pre rozširujúci blok Graphic Control Extension
328 2C Obrazový deskriptor snímky č. 1
329 00 00 00 00 (0, 0) Severozápadná rohová poloha obrazu na logickej obrazovke: (0, 0)
32D 90 01 90 01 (400, 400) Šírka a výška rámu: 400  ×  400 pixelov
331 00 0 Miestna tabuľka farieb: 0 znamená žiadne a žiadne prekladanie
332 08 8 Minimálna veľkosť kódu LZW pre obrazové údaje snímky č. 1
333 FF 255 Počet bajtov obrazových údajov LZW v nasledujúcom podbloku: 255 bajtov
334 ... <obrázkové údaje> Obrazové údaje, 255 bajtov
433 FF 255 Počet bajtov obrazových údajov LZW v nasledujúcom podbloku, 255 bajtov
434 ... <obrázkové údaje> Obrazové údaje, 255 bajtov
Opakujte pre ďalšie bloky
92C0 00 Koniec reťaze pomocného bloku pre tento rám
92C1 21 F9 Rozšírenie ovládania grafiky pre rám #2
Opakujte pre ďalšie snímky
EDABD 21 F9 Rozšírenie ovládania grafiky pre rám č. 44
Obrazové informácie a údaje pre snímku č. 44
F48F5 3B Trailer: Posledný bajt v súbore, signalizujúci EOF

Oneskorenie animácie pre každý snímok je špecifikované v GCE v stotinách sekundy. Určitá úspora dát je možná tam, kde snímka potrebuje prepísať iba časť pixelov displeja, pretože deskriptor obrazu môže definovať menší obdĺžnik, ktorý sa má preskenovať namiesto celého obrazu. Prehliadače alebo iné displeje, ktoré nepodporujú animované súbory GIF, zvyčajne zobrazujú iba prvú snímku.

Veľkosť a kvalita farieb animovaných súborov GIF sa môže výrazne líšiť v závislosti od aplikácie použitej na ich vytvorenie. Stratégie na minimalizáciu veľkosti súboru zahŕňajú používanie spoločnej globálnej tabuľky farieb pre všetky snímky (namiesto úplnej lokálnej tabuľky farieb pre každý snímok) a minimalizáciu počtu pixelov pokrytých po sebe idúcimi snímkami (takže iba pixely, ktoré sa menia z jednej snímky na ďalšie sú zahrnuté v druhom rámci). Pokročilejšie techniky zahŕňajú úpravu sekvencií farieb tak, aby lepšie zodpovedali existujúcemu slovníku LZW, čo je forma stratovej kompresie . Jednoduché zabalenie série nezávislých snímok snímok do zloženej animácie má tendenciu viesť k veľkým veľkostiam súborov. K dispozícii sú nástroje na minimalizáciu veľkosti súboru vzhľadom na existujúci GIF.

Metadáta

Metadáta môžu byť uložené v súboroch GIF ako blok komentárov, blok obyčajného textu alebo blok rozšírenia aplikácie špecifickej pre aplikáciu. Niekoľko grafických editorov používa neoficiálne bloky rozšírenia aplikácií na zahrnutie údajov použitých na generovanie obrázka, aby sa dal obnoviť pre ďalšie úpravy.

Všetky tieto metódy technicky vyžadujú rozdelenie metaúdajov do podblokov, aby aplikácie mohli prechádzať blokom metadát bez toho, aby poznali jeho vnútornú štruktúru.

Štandard metadát Extensible Metadata Platform (XMP) zaviedol neoficiálny, ale teraz rozšírený blok rozšírenia aplikácie „XMP Data“ na zahrnutie údajov XMP do súborov GIF. [38] Keďže údaje XMP sú kódované pomocou UTF-8 bez znakov NUL, v údajoch nie sú žiadne bajty. Namiesto rozdelenia údajov do formálnych podblokov sa rozširujúci blok ukončí „magickým prívesom“, ktorý nasmeruje akúkoľvek aplikáciu, ktorá s údajmi zaobchádza ako s podblokmi, do posledného 0 bajtu, ktorý ukončí reťazec podblokov.

Presadzovanie patentov Unisys a LZW

V rokoch 1977 a 1978 Jacob Ziv a Abraham Lempel publikovali pár článkov o novej triede bezstratových algoritmov kompresie údajov, ktoré sú teraz spoločne označované ako LZ77 a LZ78 . V roku 1983 Terry Welch vyvinul rýchly variant LZ78, ktorý dostal názov Lempel–Ziv–Welch (LZW). [39] [40]

Welch podal patentovú prihlášku na metódu LZW v júni 1983. Výsledný patent US4558302 [41] udelený v decembri 1985 bol pridelený Sperry Corporation , ktorá sa následne v roku 1986 zlúčila s Burroughs Corporation a vytvorila Unisys . [39] Ďalšie patenty boli získané v Spojenom kráľovstve, Francúzsku, Nemecku, Taliansku, Japonsku a Kanade.

Okrem vyššie uvedených patentov Welchov patent z roku 1983 obsahuje aj citácie niekoľkých ďalších patentov, ktoré ho ovplyvnili, vrátane:

V júni 1984 bol v časopise IEEE publikovaný článok od Welcha, ktorý prvýkrát verejne opísal techniku ​​LZW. [46] LZW sa stal populárnou technikou kompresie údajov a keď bol udelený patent, Unisys uzavrel licenčné zmluvy s viac ako stovkou spoločností. [39] [47]

Popularita LZW viedla CompuServe k tomu, že si ho vybral ako kompresnú techniku ​​pre svoju verziu GIF, vyvinutú v roku 1987. V tom čase CompuServe o patente nevedel. [39] Unisys sa dozvedel, že verzia GIF používa techniku ​​kompresie LZW a v januári 1993 vstúpila do licenčných rokovaní s CompuServe. Následná dohoda bola oznámená 24. decembra 1994. [40] Unisys uviedol, že očakával všetky hlavné komerčné spoločnosti poskytujúce informačné služby využívajúce patent LZW na licencovanie technológie od spoločnosti Unisys za primeranú cenu, ale že by nevyžadovali licencovanie alebo platenie poplatkov za nekomerčné, neziskové aplikácie založené na GIF, vrátane aplikácií na používanie o on-line službách. [47]

Po tomto oznámení došlo k všeobecnému odsúdeniu CompuServe a Unisys a mnohí vývojári softvéru hrozili, že prestanú používať GIF. Formát PNG (pozri nižšie) bol vyvinutý v roku 1995 ako plánovaná náhrada. [39] [40] [46] Získanie podpory od výrobcov webových prehliadačov a iného softvéru pre formát PNG sa však ukázalo ako ťažké a nebolo možné nahradiť GIF, hoci popularita PNG sa postupne zvýšila. [39] Preto boli vyvinuté variácie GIF bez kompresie LZW. Napríklad knižnica libungif, založená na Eric S. Raymond's giflib, umožňuje vytváranie GIF, ktoré nasledovali dátový formát, ale vyhýbali sa kompresným funkciám, čím sa vyhli použitiu patentu Unisys LZW. [48] ​​Článok Dr. Dobba z roku 2001 opísal spôsob, ako dosiahnuť kódovanie kompatibilné s LZW bez porušenia jeho patentov. [49]

V auguste 1999 Unisys zmenil podrobnosti o svojej licenčnej praxi a oznámil vlastníkom určitých nekomerčných a súkromných webových stránok možnosť získať licencie po zaplatení jednorazového licenčného poplatku vo výške 5 000 alebo 7 500 USD. [50] Takéto licencie sa nevyžadovali od vlastníkov webových stránok alebo iných používateľov GIF, ktorí používali licencovaný softvér na generovanie GIF. Napriek tomu bol Unisys vystavený tisíckam online útokov a urážlivým e-mailom od používateľov, ktorí sa domnievali, že im bude účtovaný poplatok 5 000 USD alebo žaloba za používanie obrázkov GIF na ich webových stránkach. [51] Napriek udeľovaniu bezplatných licencií stovkám neziskových organizácií, škôl a vlád, Unisys nebol úplne schopný vytvoriť dobrú reklamu a naďalej ho odsudzovali jednotlivci a organizácie, ako napr.League for Programming Freedom , ktorý v roku 1999 spustil kampaň „Burn All GIFs“. [52] [53]

Platnosť patentu LZW v Spojených štátoch skončila 20. júna 2003. [54] Platnosť náprotivných patentov v Spojenom kráľovstve, Francúzsku, Nemecku a Taliansku skončila 18. júna 2004, platnosť japonských patentov skončila 20. júna 2004 a platnosť kanadského patentu skončila 7. júla. 2004. [54] V dôsledku toho, zatiaľ čo Unisys má ďalšie patenty a patentové prihlášky týkajúce sa vylepšení techniky LZW, [54] samotný LZW (a následne GIF) je možné voľne používať od júla 2004. [55]

Alternatívy

PNG

Portable Network Graphics (PNG) bola navrhnutá ako náhrada za GIF, aby sa predišlo porušeniu patentu Unisys na techniku ​​kompresie LZW. [39] PNG ponúka lepšiu kompresiu a viac funkcií ako GIF, [56] jedinou významnou výnimkou je animácia. PNG je vhodnejší ako GIF v prípadoch, keď sa vyžaduje zobrazenie skutočných farieb a priehľadnosť alfa .

Hoci podpora formátu PNG prichádzala pomaly, nové webové prehliadače podporujú PNG. Staršie verzie programu Internet Explorer nepodporujú všetky funkcie PNG. Verzie 6 a staršie nepodporujú transparentnosť alfa kanála bez použitia rozšírení HTML špecifických od spoločnosti Microsoft. [57] Gamma korekcia obrázkov PNG nebola podporovaná pred verziou 8 a zobrazenie týchto obrázkov v starších verziách môže mať nesprávny odtieň. [58]

Pre identické 8-bitové (alebo nižšie) obrazové údaje sú súbory PNG zvyčajne menšie ako ekvivalentné súbory GIF, a to z dôvodu efektívnejších techník kompresie používaných v kódovaní PNG. [59] Úplná podpora pre GIF je komplikovaná najmä zložitou štruktúrou plátna, ktorú umožňuje, hoci práve to umožňuje funkcie kompaktnej animácie.

Formáty animácií

Videá riešia mnohé problémy, ktoré GIF predstavujú pri bežnom používaní na webe. Zahŕňajú výrazne menšie veľkosti súborov , schopnosť prekonať obmedzenie 8-bitových farieb a lepšie spracovanie snímok a kompresiu prostredníctvom kodekov . Prakticky univerzálna podpora formátu GIF vo webových prehliadačoch a nedostatočná oficiálna podpora videa v štandarde HTML spôsobili, že GIF sa dostal do popredia na účely zobrazovania krátkych súborov podobných videu na webe.

  • MNG ("Multiple-image Network Graphics") bolo pôvodne vyvinuté ako riešenie pre animácie založené na PNG. MNG dosiahol verziu 1.0 v roku 2001, ale podporuje ju len málo aplikácií.
  • APNG ("Animated Portable Network Graphics") navrhla Mozilla v roku 2006. APNG je rozšírenie formátu PNG ako alternatíva k formátu MNG. APNG podporuje väčšina prehliadačov od roku 2019. [60] APNG poskytuje možnosť animovať súbory PNG, pričom zachováva spätnú kompatibilitu v dekodéroch, ktoré nerozumejú časti animácie (na rozdiel od MNG). Staršie dekodéry jednoducho vykreslia prvú snímku animácie.
Skupina PNG oficiálne odmietla APNG ako oficiálne rozšírenie dňa 20. apríla 2007. [61]
Existuje niekoľko následných návrhov na jednoduchý animovaný grafický formát založený na PNG s použitím niekoľkých rôznych prístupov. [62] Napriek tomu je APNG stále vo vývoji Mozilly a je podporovaný vo Firefoxe 3.0 [63] [64], zatiaľ čo podpora MNG bola zrušená. [65] [66] APNG v súčasnosti podporujú všetky hlavné webové prehliadače vrátane Chrome (od verzie 59.0), Opera, Firefox a Edge.
  • Vložené objekty Adobe Flash a
  • Súbory MPEG sa na niektorých webových stránkach používali na zobrazenie jednoduchého videa, ale vyžadovali si použitie dodatočného doplnku prehliadača.
  • WebM a
  • WebP sú vo vývoji a podporujú ich niektoré webové prehliadače. [67]
  • Medzi ďalšie možnosti webovej animácie patrí obsluhovanie jednotlivých snímok pomocou AJAX , príp
  • animácia obrázkov SVG ("Scalable vector graphics") pomocou JavaScriptu alebo SMIL ("Synchronized Multimedia Integration Language"). [ potrebný citát ]
  • So zavedením rozšírenej podpory značky videa HTML5 ( <video>) vo väčšine webových prehliadačov niektoré webové stránky používajú zacyklenú verziu značky videa generovanú funkciami JavaScript . To dáva vzhľad GIF, ale s výhodami veľkosti a rýchlosti komprimovaného videa.
Pozoruhodnými príkladmi sú Gfycat a Imgur a ich metaformát GIFV, čo je v skutočnosti značka videa, ktorá prehráva komprimované video vo formáte MP4 alebo WebM v slučke. [68]
V porovnaní s formátom GIF, ktorý nemá kompresiu DCT, umožňuje HEIF výrazne efektívnejšiu kompresiu. HEIF ukladá viac informácií a vytvára kvalitnejšie animované obrázky s malým zlomkom ekvivalentnej veľkosti GIF. [70]
  • Kodek AV1 možno použiť aj ako video alebo sekvenovaný obraz.

Používa

V apríli 2014 4chan pridal podporu pre tiché WebM videá, ktoré sú menšie ako 3 MB a 2 minúty na dĺžku, [72] [73] a v októbri 2014 Imgur začal konvertovať všetky súbory GIF nahrané na stránku na video a poskytovať odkaz na prehrávač HTML vzhľad skutočného súboru s .gifvpríponou. [74] [75]

V januári 2016 začal Telegram prekódovať všetky súbory GIF na videá MPEG-4 , ktoré „vyžadujú až o 95 % menej miesta na disku pre rovnakú kvalitu obrazu“. [76]

Pozri tiež

Referencie

  1. ^ a b c "Graphics Interchange Format, Version 87a" . W3C . 15. júna 1987. Archivované z originálu 22. decembra 2018 . Získané 13. októbra 2012 .
  2. ^ a b c "Graphics Interchange Format, Version 89a" . W3C . 31. júla 1990. Archivované z originálu 22. decembra 2018 . Získané 6. marca 2009 .
  3. ^ "Online umenie" . Aplikácie Apple spoločnosti Compute !. decembra 1987. s. 10 . Získané 14. septembra 2016 .
  4. ^ Holdener III, Anthony (2008). Ajax: Definitívny sprievodca: Interaktívne aplikácie pre web . O'Reilly Media. ISBN 978-0596528386.
  5. ^ Furht, Borko (2008). Encyklopédia multimédií . Springer. ISBN 978-0387747248.
  6. ^ McHugh, Molly (29. mája 2015). „Konečne, skutočne, skutočne, skutočne môžete uverejňovať GIFy na Facebooku“ . Drôtové . wired.com . Archivované z originálu 30. mája 2015 . Získané 29. mája 2015 .
  7. ^ Perez, Sarah (29. mája 2015). „Facebook potvrdzuje, že bude oficiálne podporovať GIFy“ . techcrunch.com . Archivované z originálu 30. mája 2015 . Získané 29. mája 2015 .
  8. ^ „Predstavujeme nálepky GIF“ . Instagram . 23. januára 2018. Archivované z originálu 12. decembra 2019 . Získané 19. septembra 2019 .
  9. ^ "Oxfordské slovníky USA Slovo roka 2012" . Blog OxfordWords . Oxfordské americké slovníky. 13. novembra 2012. Archivované z originálu 3. augusta 2014 . Získané 1. mája 2013 .
  10. ^ Flood, Alison (27. apríla 2013). " Gif je americké slovo roka? Tak tomu hovorím všeliek . " Blog o knihách. The Guardian . Londýn. Archivované z originálu 1. decembra 2016 . Získané 1. mája 2013 .
  11. ^ Olsen, Steve. "Stránka výslovnosti GIF" . Archivované z originálu 25. februára 2009 . Získané 6. marca 2009 .
  12. ^ a b c "Vynálezca Gif hovorí ignoruj ​​slovníky a povedz 'Jif'" . BBC News . 22. mája 2013. Archivované z originálu 27. júna 2018. Získané 22. mája 2013 .
  13. ^ Buck, Stephanie (21. októbra 2014). „70 percent ľudí na celom svete vyslovuje GIF s tvrdým g . Mashable . Archivované z originálu 23. decembra 2021 . Získané 24. decembra 2021 .
  14. ^ van der Meulen, Marten (22. mája 2019). "Obama, potápanie alebo darček?: Autorita a argumentácia v online diskusii o výslovnosti GIF " . English Today . 36 (1): 45-50.
  15. ^ "GIF" . The American Heritage Abbreviations Dictionary, tretie vydanie . Spoločnosť Houghton Mifflin. 2005. Archivované z originálu 3. septembra 2011 . Získané 15. apríla 2007 .
  16. ^ "GIF" . Cambridgeský slovník americkej angličtiny . Cambridge University Press. Archivované z originálu 27. februára 2014 . Získané 19. februára 2014 .
  17. ^ "Gif - definícia zo slovníka Merriam-Webster Dictionary" . Slovník Merriam-Webster . Merriam-Webster, Incorporated. Archivované z originálu 22. októbra 2013 . Získané 6. júna 2013 .
  18. ^ "GIF" . Oxfordské slovníky online . Oxford University Press. Archivované z originálu 12. októbra 2014 . Získané 7. októbra 2014 .
  19. ^ "gif podstatné meno - definícia, obrázky, výslovnosť a poznámky k použitiu | Oxford Advanced Learner's Dictionary" . Oxford Learner's Dictionaries . Archivované z originálu 24. novembra 2020 . Získané 6. februára 2021 .
  20. ^ "GIF | Definícia GIF podľa Oxfordského slovníka" . Lexico . Archivované z originálu 13. februára 2021 . Získané 6. februára 2021 .
  21. ^ Stevenson, Angus, ed. (2010). Oxfordský slovník angličtiny (3. vydanie). Oxford University Press. ISBN 9780199571123. OCLC  729551189 .
  22. ^ The New Oxford American Dictionary (2. vydanie). Oxford University Press. 2005. s. 711.
  23. ^ The New Oxford American Dictionary (3. vydanie). 2012.(súčasť vstavaných slovníkov systému Macintosh).
  24. ^ O'Leary, Amy (21. máj 2013). "Pocta pre tvorcu GIF" . The New York Times . Archivované z originálu 22. mája 2013 . Získané 22. mája 2013 .
  25. ^ a b Rothberg, Daniel (4. december 2013). "'Jeopardy' sa rúti do boja o výslovnosť 'GIF' . " Los Angeles Times . Archivované z originálu 6. decembra 2013. Získané 4. decembra 2013 .
  26. ^ O'Leary, Amy (23. mája 2013). „Vypukla bitka o výslovnosť GIF“ . The New York Times . Archivované z originálu 16. decembra 2013 . Získané 5. decembra 2013 .
  27. ^ Valinský, Jordánsko (25. februára 2020). „Jif vyrieši veľkú debatu nádobou s arašidovým maslom GIF“ . CNN . Archivované z originálu 25. februára 2020 . Získané 25. februára 2020 .
  28. ^ Marur, DR; Bhaskar, V. (marec 2012). "2012 Medzinárodná konferencia o zariadeniach, obvodoch a systémoch (ICDCS)" . Zariadenia, obvody a systémy (ICDCS) . Medzinárodná konferencia o zariadeniach, obvodoch a systémoch (ICDCS) . Univerzita Karunya; Coimbatore, India: IEEE. s. 297–301. doi : 10.1109/ICDCSyst.2012.6188724 . ISBN 9781457715457. Archivované z originálu 2. júla 2017 . Získané 11. marca 2015 .
  29. ^ S. Chin; D. Iverson; O. Campesato; P. Trani (2011). Pre Android Flash (PDF) . New York: Apress. p. 350. ISBN  9781430232315. Archivované (PDF) z originálu 2. apríla 2015 . Získané 11. marca 2015 .
  30. ^ Bakhshi, Saeideh; Shamma, David A.; Kennedy, Lyndon; Song, Yale; de Juan, Paloma; Kaye, Joseph "Jofish" (7. mája 2016). „Rýchle, lacné a dobré: Prečo nás animované GIFy zaujali“ . Zborník z konferencie CHI o ľudských faktoroch v počítačových systémoch v roku 2016 : 575–586. doi : 10.1145/2858036.2858532 . S2CID 7417853 . Získané 17. augusta 2022 . 
  31. ^ Highfield, Tim; Leaver, Tama (2016). „Instagrammatika a digitálne metódy: štúdium vizuálnych sociálnych médií, od selfie a GIF po memy a emotikony“ . Komunikačný výskum a prax . 2 (1): 47-62. doi : 10.1080/22041451.2016.1155332 . S2CID 148538216 . Získané 17. augusta 2022 . 
  32. ^ a b c Andreas Kleinert (2007). "Rozšírenia GIF 24 Bit (truecolor)" . Archivované z originálu 16. marca 2012 . Získané 23. marca 2012 .
  33. ^ a b Philip Howard. "Príklad True-Color GIF" . Archivované z originálu 22. februára 2015 . Získané 23. marca 2012 .
  34. ^ "Nullsleep - Jeremiah Johnson - Štúdia kompatibility prehliadača s minimálnym oneskorením animovaného GIF" . Archivované z originálu 10. októbra 2014 . Získané 26. mája 2015 .
  35. ^ "Sú rozdielne! Ako dosiahnuť zhodu s rýchlosťou animácií súborov GIF v [ sic ] prehliadačoch" . Blog vývojára . 14. 2. 2012. Archivované z originálu 1. 2. 2017 . Získané 15. júna 2017 .
  36. ^ Kráľovský Frazier. "Všetko o GIF89a" . Archivované z originálu 18. apríla 1999 . Získané 7. januára 2013 .
  37. ^ Scott Walter (1996). Tajné zbrane na skriptovanie webu . Que Publishing . ISBN  0-7897-0947-3.
  38. ^ "Špecifikácia XMP, časť 3: Ukladanie do súborov" (PDF) . Adobe. 2016. s. 11–12. Archivované (PDF) z originálu 25. februára 2018 . Získané 16. augusta 2018 .
  39. ^ a b c d e f g Greg Roelofs. "História formátu prenosnej sieťovej grafiky (PNG)" . Archivované z originálu 7. marca 2012 . Získané 23. marca 2012 .
  40. ^ a b c Stuart Caie. "Smutný deň... Patent GIF mŕtvy v 20" . Archivované z originálu 10. februára 2012 . Získané 23. marca 2012 .
  41. ^ US 4558302 , Welch, Terry A. , publikovaná 1985-12-10, pridelená Sperry Corp. 
  42. ^ Patent JP S5719857A , Kanatsu, Jiyun, "Zariadenie na ukladanie dát na kompresiu údajov", publikovaný 2. 2. 1982, pridelený spoločnosti Nippon Electric Corp. 
  43. ^ Patent JP S57101937A , Kanatsu, Jiyun, „Zariadenie na ukladanie údajov“, publikovaný 20. 1986, pridelený spoločnosti Nippon Electric Corp. 
  44. ^ DE patent 3118676 , Eckhart, Heinz Karl, "Verfahren zur Kompression redundanter Folgen serieller Datenelemente [Metóda na kompresiu nadbytočných sekvencií prvkov sériových dát]", publikované 12.12.1982 
  45. ^ Patent USA 4,558,302
  46. ^ a b "Kontroverzia GIF: Pohľad vývojára softvéru" . Archivované z originálu 23. augusta 2016 . Získané 26. mája 2015 .
  47. ^ a b "Unisys objasňuje politiku týkajúcu sa používania patentov v ponukách on-line služieb" . Archivované z originálu 7. februára 2007.– archivované Ligou za slobodu programovania
  48. ^ "Libungif" . Archivované z originálu 13. apríla 2015 . Získané 26. mája 2015 .
  49. ^ Cargill, Tom (1. október 2001). "Nahradenie slovníka druhou odmocninou" . Časopis Dr. Dobba . Archivované z originálu 28. júna 2017 . Získané 20. januára 2017 .
  50. ^ "Informácie o softvéri a patentoch LZW" . Archivované z originálu 8. júna 2009 . Získané 31. januára 2007 .– objasnenie z 2. septembra 1999
  51. ^ Unisys nežaluje (väčšinu) správcov webu za používanie súborov GIF Archivované 10. mája 2017 na Wayback Machine Slashdot vyšetrovanie sporu
  52. ^ „Deň napálenia všetkých GIFov“ . Archivované z originálu 13. októbra 1999.
  53. ^ Napáliť všetky súbory GIF Archivované 3. februára 2007 v zariadení Wayback Machine – projekt Ligy za slobodu programovania (najnovšia verzia)
  54. ^ a b c "Informácie o licencii na GIF a iné technológie založené na LZW" . Archivované z originálu 2. júna 2009 . Získané 26. apríla 2005 .
  55. ^ „Prečo na webových stránkach GNU nie sú žiadne súbory GIF“ . Free Software Foundation. Archivované z originálu 19. mája 2012 . Získané 19. mája 2012 .
  56. ^ "Kompresia PNG verzus GIF" . 31. marca 2007. Archivované z originálu 15. júla 2009 . Získané 8. júna 2009 .
  57. ^ "AlphaImageLoader Filter" . Microsoft. Archivované z originálu 3. októbra 2014 . Získané 26. mája 2015 .
  58. ^ „Čo je nové v programe Internet Explorer 7“ . MSDN . Archivované z originálu 1. marca 2009 . Získané 6. marca 2009 .
  59. ^ "Formát obrázkového súboru PNG" . Archivované z originálu 14. júna 2009 . Získané 8. júna 2009 .
  60. ^ "Môžem použiť... Tabuľky podpory pre HTML5, CSS3 atď." . caniuse.com . Archivované z originálu 19. februára 2018 . Získané 10. apríla 2020 .
  61. ^ "HLASOVANIE ZLYHALO: APNG 20070405a" . SourceForge mailing list. 20. apríla 2007. Archivované z originálu 13. februára 2013 . Získané 14. júla 2013 .
  62. ^ „Diskusia o jednoduchom „animovanom“ formáte PNG“ . Archivované z originálu 26. februára 2009 . Získané 12. júla 2011 .
  63. ^ "Špecifikácia APNG" . Archivované z originálu 5. júla 2010 . Získané 26. mája 2015 .
  64. ^ "Mozilla Labs » Archív blogu » Lepšie animácie vo Firefoxe 3" . Archivované z originálu 7. marca 2016 . Získané 3. februára 2016 .
  65. ^ "195280 – Odstránenie podpory MNG/JNG" . Archivované z originálu 25. februára 2021 . Získané 26. mája 2015 .
  66. ^ "18574 – (mng) obnoviť podporu formátu animácie MNG a formátu obrázka JNG" . Archivované z originálu 17. marca 2021 . Získané 26. mája 2015 .
  67. ^ „Blog Chromium: Chrome 32 Beta: Animované obrázky WebP a rýchlejší dotykový vstup Chrome pre Android“ . Blog.chromium.org. 21. novembra 2013. Archivované z originálu 17. júla 2018 . Získané 1. februára 2014 .
  68. ^ "Predstavujeme GIFV - Imgur Blog" . imgur.com. 9. 10. 2014. Archivované z originálu 14. 12. 2014 . Získané 14. decembra 2014 .
  69. ^ Thomson, Gavin; Shah, Athar (2017). „Predstavujeme HEIF a HEVC“ (PDF) . Apple Inc. Archivované (PDF) z originálu 19. januára 2020 . Získané 5. augusta 2019 .
  70. ^ "Porovnanie HEIF - vysokoúčinný obrazový formát súboru" . Nokia Technologies . Archivované z originálu 25. júla 2019 . Získané 5. augusta 2019 .
  71. ^ "#3271 (Povoliť používanie ďalších pixelových formátov s libvpx-vp9) – FFmpeg" . trac.ffmpeg.org . Archivované z originálu 16. júna 2020 . Získané 10. apríla 2020 .
  72. ^ Dewey, Caitlin. „Zoznámte sa s technológiou, ktorá môže spôsobiť, že GIF budú zastarané“ . The Washington Post . Archivované z originálu 11. mája 2015 . Získané 4. februára 2015 .
  73. ^ "Podpora WebM na 4kanáloch" . Blog 4chan . Archivované z originálu 6. apríla 2014 . Získané 4. februára 2015 .
  74. ^ "Predstavujeme GIFV" . Imgur. 9. augusta 2014. Archivované z originálu 5. mája 2020 . Získané 21. júla 2016 .
  75. ^ Allan, Patrick (9. októbra 2014). "Imgur vylepšuje GIF pre vyššiu rýchlosť a vyššiu kvalitu s GIFV" . Lifehacker . Archivované z originálu 3. februára 2015 . Získané 4. februára 2015 .
  76. ^ "GIF revolúcia" . Oficiálny telegramový blog . 4. januára 2016. Archivované z originálu 10. januára 2016 . Získané 4. januára 2016 .

Externé odkazy