Какво е GIF файл?
GIF или форматът за графичен обмен е вид силно компресирано изображение. Притежаван от Unisys, GIF използва алгоритъм за компресия LZW, който не влошава качеството на изображението. За всяко изображение GIF обикновено позволява до 8 бита на пиксел и до 256 цвята са разрешени в цялото изображение. За разлика от JPEG изображение, което може да показва до 16 милиона цвята и доста докосва границите на човешкото око. Когато се появи интернет, GIF файловете си оставаха най-добрият избор, защото изискваха ниска честотна лента и съвместими с графиките, които консумират плътни цветни области. Анимираният GIF комбинира множество изображения или рамки в един файл и ги показва в последователност, за да генерира анимиран клип или кратко видео. Цветовите ограничения са до 256 за всеки кадър и е вероятно да са най-малко подходящи за възпроизвеждане на други изображения и снимки с цветен градиент.
GIF файлов формат
Концептуално, GIF файловете имат графична област с фиксиран размер, запълнена с нула или повече изображения. Някои GIF файлове разделят графичната област или блокове с фиксиран размер на подизображения, способни да функционират като анимирани рамки в случай на анимиран GIF. GIF форматът използва дълбочината на пикселите от 1 до 8 бита за съхраняване на растерни данни. За съхраняване на изображенията винаги се използват RGB цветови модел и данни от палитрата. В зависимост от версията, заглавката с фиксирана дължина („GIF87a“ или „GIF89a“) дефинира началото на типичен GIF файл.
В момента са налични две версии на GIF: 87a и 89a. Първият е оригиналният GIF формат, докато вторият е новият GIF формат. В този файлов формат характеристиките на блоковете и размерите на пикселите се споменават в логически екранен дескриптор с фиксирана дължина. Съществуването и размерът на глобална цветова таблица може да бъде посочено от дескриптора на екрана, който проследява допълнителни подробности, ако има такива. Трейлърът е последният байт от файла, който съдържа един байт ASCII точка и запетая. Типично оформление на GIF87a файл е следното:
Заглавие
Заглавието съдържа шест байта и се използва за указване на типа на файла като GIF. Въпреки че дескрипторът на логическия екран е отделен от действителната заглавка, все пак понякога се счита за втора заглавка. Същата структура, която се използва за съхраняване на заглавката, може да съхранява дескриптора на логическия екран. Всички GIF файлове започват с 3-байтов подпис и използват знаците „GIF“ като идентификатор. Версията също е с размер три байта и декларира версията на GIF файла.
Логически дескриптор на екрана
Дескриптор на изображението с фиксирана дължина определя информацията за екрана и цвета, необходима за създаване на GIF изображение. Полетата Height и Width включват най-малката стойност на разделителната способност на екрана, задължителна за показване на данните за изображението. Ако устройството за показване не е в състояние да покаже определената разделителна способност, ще е необходимо мащабиране за подходящо показване на изображението. Информацията за екрана и цветовата карта се показва от четирите подполета на таблицата по-долу (докато бит 0 е най-малкият бит):
Битове | Подполета |
---|---|
0-2 | Размер на глобалната цветова таблица |
3 | Флаг за сортиране на цветна таблица |
4-6 | Цветна разделителна способност |
7 | Глобален флаг на цветната таблица |
Глобална цветна таблица
Незадължителна глобална цветна таблица се поставя точно след дескриптора на логическия екран. Тази таблица е картографирана, за да индексира данните за цвета на пиксела в данните за изображението. При липса на глобална цветова таблица всяко изображение в GIF файла използва своя локален цвят. По-добре е да предоставите цветова таблица по подразбиране, ако липсват както глобалната, така и локалната цветова таблица. Серия от трибайтови тройки съставя елементите на цветната таблица. Всеки байт характеризира RGB цветова стойност. Червеният, зеленият и синият цвят се използват като стойности на всеки елемент от цветната таблица. Записите в глобалната цветова таблица достигат максимум 256 записа и винаги се представят в степен две.
Данни за изображения
Данните за изображението съхраняват байт от некодирани символи, последван от свързан списък от под- заедно с LZW-кодираните данни.
Ремарке
Трейлърът представлява един байт данни, който е последният знак във файла. Стойността на този байт е постоянно 3Bh и указва края на потока от данни. Всеки GIF файл трябва да има трейлър в последния файл.