Narsil č. 38

GIF

↑
Narsil GIFX – obrázek 1

Protože se v současnosti zabývám vytvářením HTML dokumentů, se zájmem čtu seriál článků o HTML v Narsilu. Velmi se mi líbila ukázková stránka s rámy v minulém čísle. Myslím, že kvalitní www stránka se bez animovaných GIFů neobejde. Obrázky ve formátu JPEG bych doporučoval používat co nejméně, nevím jak vy, ale mě se JPEGy prostě nelíbí.

Myslím, že pro vytváření kvalitních animovaných GIFů je dobré znát tento formát trochu podrobněji. Proto vznikl tento článek.

----------------------------------------------------- GIF - Graphics Interchange Format (formát pro výměnu grafických údajů) byl vyvinut v roce 1987 pro potřeby sítě americké firmy CompuServe, která jej také vyvinula a který se díky svým kvalitám rozšířil na všechny platformy.

Narsil GIFX – obrázek 2

Formát umožňuje ukládat obrázky s maximálním rozměrem 16000 x 16000 pixelů a maximálním počtem barev 256 z palety 16,7 miliónů barev. Barevné rozlišení je tedy jeden byte (8 bitů) na pixel, případně menší (Atari ST). GIF používá pro zmenšení objemu grafických dat neztrátový komprimační algoritmus LZW. Tato metoda, pojmenovaná podle autorů Lempela-Ziva a Welcha a pro potřeby GIF standardu lehce upravená, redukuje objem výsledného souboru zhruba na polovinu (nebo až na pětinu).

Narsil GIFX – obrázek 3

GIF umožňuje ukládat do jednoho souboru více různě velkých obrázků se společným grafickým pozadím (barvou) přičemž části odpovídající pozadí nenesou žádnou informaci a nejsou tedy kódované. Každý z obrázků v jednom souboru může mít vlastní barevnou paletu a je definována také jeho relativní poloha vůdči pozadí. Pro všechny obrázky je tedy společná základní šířka a výška a pokud jsou další obrázky menší nebo jsou vůdči společné základně (levý horní roh) posunuté, doplní se prázdná místa barvou pozadí. Barva pozadí je určena jedním bajtem v Logical Screen Descriptoru /1/ a může být interpretována jako barva průhledná (žádná barva), takže nepřekresluje původní barvu obrazovky. Některé grafické programy umožňují nahradit jednu z barev ve vlastním obrázku barvou průhledného pozadí. Výsledek pak připomíná sprite.

Narsil GIFX – obrázek 4

Těchto základních možností využívají programy k editaci animovaných GIFů. Nejjednodušší způsob animace je posouvat jeden identický obrázek vůdči společným rozměrům GIFu - například poskakující nápis. Složitější animací je potom kombinace několika různých obrázků s posouváním - poskakující nápis se deformuje nebo zmenšuje a zvětšuje.

Narsil GIFX – obrázek 5

GIF byl původně vyvinut pro přenos obrázků po telefonních linkách a proto může mít obrazová data uložena dvojím způsobem. Buď postupně - jednotlivé řady pixelů odshora dolů, a nebo prokládaně. Při prokládaném módu jsou obrazová data uspořádána tak, že se celý obrázek zobrazuje ve čtyřech cyklech. V prvním cyklu se zobrazí nultý a pak každý osmý řádek. Při následujících třech cyklech se zobrazí vždy další řádek uprostřed zobrazených v předchozím cyklu (viz ukázka). Toto řešení je výhodné při velmi nízkých přenosových rychlostech nebo velkých obrázcích. Už při získání jedné čtvrtiny nebo poloviny obrazových dat můžeme rozpoznat co na obrázku je a přenos případně ukončit.

Pro účely rozšíření funkcí (předpokládaných) budoucích vyšších verzí GIFů byl do definice formátu zařazený rozšiřovací blok (GIF Extension Block). Po základní verzi GIF 87a vznikla v roce 1989 verze 89a která definuje čtyři nové prvky:

blok rozšíření grafické kontroly (Graphic Control Extension) - obsahuje další informace o interpretaci grafických dat. Jestli bude v průběhu vykreslování obrázku nějaké zpoždění nebo jestli se bude čekat na vstup uživatele apod.

blok komentářů (Comment Extension) - textové informace, které se nezobrazují.

blok grafického textu (Plain Text Extension) - textové informace které se zobrazují jako součást grafiky (velikost a umístění textu).

aplikační blok - (Application Extension) - připraveno pro uživatelské aplikace.

Dále byly pro účely interaktivního přenosu GIFů navrhnuty též řídící sekvence GCE (GIF Capabilities Enquiry) a GCR (GIF Capabilities Response).

Programy pro editaci animovaných GIFů využívají samozřejmě možnosti časových zpoždění také. Můžeme pak nastavit rychlost animace, spojovat animované GIFy s různou rychlostí přehrávání do jednoho GIFu apod. Stejné obrázky umístěné za sebou můžeme takto interpretovat jako jeden obrázek, ale zobrazovat ho s větším zpožděním. Tím se ušetří na velikosti výsledného GIFu.

Formát GIF je dnes už považován za staříka, ale díky svojí struktuře a způsobu komprimace je stále výhodný a hojně používaný v síťových aplikacích (tvorba www stránek apod.). Vznikají však formáty nové, které mají ambice stát se na síti nástupci GIFů - například PNG (bezeztrátový truecolor).

-JS- (z různých zdrojů)

----------------------------------------------------- 1/ Logical Screen Descriptor - blok 7 bajtů na začátku GIFu hned za úvodní šestibajtovou signaturou (signatura označuje formát GIF a jeho verzi) Descriptor je společný a závazný pro všechny jednotlivé obrázky uvnitř GIFu a obsahuje také společné rozměry, barevné rozlišení a další důležité údaje.