![][1] Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением [GIF][2]-формата и методом сжатия [LZW][3].
Файл в формате [GIF][4] состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения. ![][5] **Основные характеристики формата GIF:**
* Изображение в формате [GIF ][6]хранится построчно, поддерживается только формат с индексированной палитрой цветов;
* Поддерживается 256-цветовая палитра;
* Этот формат позволяет хранить несколько изображений в одном файле;
* GIF поддерживает анимационные изображения; _Такие изображения представляют собой последовательность из нескольких статичных кадров, а также информацию о том, сколько времени каждый кадр должен быть показан на экране. Анимацию можно сделать цикличной, тогда вслед за последним кадром начнётся воспроизведение первого кадра и т. д._
* Поддерживает «прозрачность»; _Один из цветов в палитре может быть объявлен «прозрачным». В этом случае в программах, которые поддерживают прозрачность GIF (например, большинство современных браузеров) сквозь пиксели, окрашенные «прозрачным» цветом, будет виден фон. GIF анимация может использовать прозрачность для того чтобы не сохранять очередной кадр целиком, а только изменения относительно предыдущего._
* Используется универсальный алгоритм сжатия без потерь LZW.
[Читать дальше →][7]
[1]:
https://habrastorage.org/files/c7f/abc/fab/c7fabcfab6ac48be82906ac67ca3b623.png
[2]:
https://ru.wikipedia.org/wiki/GIF
[3]:
https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch
[4]:
https://ru.wikipedia.org/wiki/GIF
[5]:
https://habrastorage.org/files/d49/97d/227/d4997d2275b141e0bebbe826eb796c26.png
[6]:
https://ru.wikipedia.org/wiki/GIF
[7]:
http://habrahabr.ru/post/274917/#habracut