CodeNet / Приложения / Алгоритмы / Сжатие и кодирование
CodeNet / Приложения / Графика / Форматы файлов
CodeNet / Остальное / Форматы файлов
GIF
- Введение
- Общий формат файла
- Идентификатор GIF
- Дескриптор экрана
- Глобальная таблица цветов
- Дескриптор изображения
- Локальная таблица цветов
- Растровые данные
- Терминатор GIF
- Расширенный блок GIF
- Приложение a - Глоссарий
- Приложение b - Взаимодействующие последовательности
- Приложение c - Упаковка и сжатие изображения
- Приложение d - Обработка нескольких изображений
ВВЕДЕНИЕ
'GIF' (tm) - это стандарт фирмы CompuServe для определения растровых цветных изображений. Этот формат позволяет высвечивать на различном оборудовании графические высококачественные изображения с большим разрешением и подразумевает механизм обмена и высвечивания изображений. Описанный в настоящем документе формат изображений был разработан для поддержки настоящей и будущей технологии обработки изображений и будет в дальнейшем служить основой для будущих графических продуктов CompuServe.
Главная задача настоящего документа состоит в том, чтобы снабдить программистов необходимой технической информацией для написания декодеров и кодировщиков GIF. Поэтому в документе используется терминология связанная с общими вопросами графики и программирования.
Первый раздел настоящего документа описывает формат данных GIF и его компоненты в приложении к декодерам GIF, вне зависимости от того являются ли они отдельной программой или частью пакета связи. Приложение B относится к декодерам являющимися частью пакетов связи и описывает протокол, необходимый для входа и существования режима GIF и отвечает на ряд специфических вопросов. Глоссарий в приложении A определяет некоторые термины, использованные в документе. Приложение C дает подробное объяснение того, как сами графические изображения пакуются в виде последовательности байтов.
ОБЩИЙ ФОРМАТ ФАЙЛА
Блок закрашенный голубым цветом повторяется от 1 до N раз.
ИДЕНТИФИКАТОР GIF
Наличие в начале файла специальной "подписи" указывает, что последующие данные являются действительно потоком данных изображения в формате GIF. Эта "подпись" состоит из следующих шести символов: GIF87a
Три последних символа '87a' могут рассматриваться как номер версии для данного конкретного определения GIF и будут использоваться в дальнейшем в качестве ссылки на документ с описанием GIF в зависимости от номера версии.
ДЕСКРИПТОР ЭКРАНА
Дескриптор экрана описывает общие параметры для всех последующих изображений в формате GIF. Он определяет размеры пространства изображения или требуемого логического экрана, существование информации о таблице цветов и "глубине" экрана. Эта информация запоминается в виде серии 8-битовых байтов, как показано ниже.
Ширина экрана | 1 | Ширина растра в пикселах (сначала LSB) |
2 | ||
Высота экрана | 3 | Высота растра в пикселах (сначала LSB) |
4 | ||
5 | Бит 7: M = 1, За дескриптором следует глобальная таблица цветов Биты 4,5,6: cr+1 = число битов цветового разрешения Бит 3: Всегда 0 Биты 2,1,0: pixel+1 = число бит/пиксел в изображении | |
background | 6 | фон - цветовой индекс фона экрана |
0 | 7 |
Ширина и высота логического экрана могут быть больше размеров физического экрана. Способ высвечивания изображений больших, чем размеры физического экрана зависит от реализации и может использовать преимущества конкретного оборудования (например, окна скроллинга в Macintosh scrolling windows). В противном случае изображение будет усечено по краям экрана.
Значение 'pixel' также определяет число цветов в изображении. Диапазон значений 'pixel' составляет от 0 до 7, что соответствует от 1 до 8 битам. Это транслируется в диапазон от 2 (черно-белые изображения) до 256 цветов. Бит 3 в байте 5 зарезервирован для будущих определений и должен быть нулевым.
ГЛОБАЛЬНАЯ ТАБЛИЦА ЦВЕТОВ
Глобальная таблица цветов является необязательной и рекомендуется для изображений, где требуется точная передача цветов. На существование этой таблицы указывает поле 'M' в байте 5 дескриптора экрана. Цветовая таблица может быть также связана с каждым изображением в GIF-файле, что будет описано позже. Однако обычно эта глобальная таблица будет использоваться, из-за ограничений, существующих в настоящее время в доступном оборудовании. Флаг 'M' в дескрипторе конкретного изображения обычно равен 0. Если глобальная таблица цветов присутствует, ее определение следует непосредственно за дескриптором экрана. Число элементов цветовой таблицы, следующей за описателем экрана равно 2**(число бит/пиксел), причем каждый элемент состоит из трех байтов, значения которых описывают соответственно относительную интенсивность красного, зеленого и синего цветов. Структура блока цветовой таблицы:
Описание | Байт |
---|---|
Значение красного для цвета 0 | 1 |
Значение зеленого для цвета 0 | 2 |
Значение синего для цвета 0 | 3 |
Значение красного для цвета 1 | 4 |
Значение зеленого для цвета 1 | 5 |
Значение синего для цвета 1 | 6 |
И так далее... | ... |
Получаемое значение каждого пиксела при высвечивании изображения будет соответствовать ближайшему доступному цвету из цветовой таблицы дисплея. Цветовые компоненты представляют собой значение относительной интенсивности от нулевой (0) до полной (255). Белый цвет может быть представлен как (255,255,255), черный как (0,0,0) и желтый как (180,180,0). При высвечивании на дисплеях, которые поддерживают менее 8 бит на цветовую компоненту, используются старшие биты. При создании элементов цветовой таблицы GIF на аппаратуре, поддерживающей менее 8 бит на компоненту, значение аппаратной компоненты должно быть конвертировано в 8-битный формат по следующей формуле:
= *255/(2** -1)
Это обеспечивает точный перевод цветов для всех дисплеев. В случае создания изображения GIF на аппаратуре без возможности цветовой палитры, должна быть создана фиксированная палитра на основе доступных для данного оборудования цветов. Если указано отсутствие глобальной таблицы цветов, цветовая таблица по умолчанию генерируется внутренним образом так, что каждый цветовой индекс равен аппаратному цветовому индексу modulo