GIF
Большинство ведущих специалистов-графиков, имеющих
дело с алгоритмом LZW, сталкиваются с аналогичными юридическими
проблемами при использовании
популярного межплатформенного формата файлов растровой графики
GIF (Graphics Interchange Format - формат обмена графическими данными,
произносится "джиф"), разработанного компанией CompuServe.
Обычно для имени файлов GIF используется расширение GIF, и тысячи
таких файлов можно получить в CompuServe.
Структура файла GIF зависит от версии GIF-спецификации, которой
соответствует файл. В настоящее время используются две версии, GIF87a
и GIF89a. Первая из них проще. Независимо от номера версии, файл
GIF начинается с 13-байт заголовка, содержащего сигнатуру, которая
идентифицирует этот файл в качестве GIF-файла, номер версии GIF и
другую информацию. Если файл хранит всего одно изображение, вслед
за заголовком обычно располагается общая таблица цветов, определяющая
цвета изображения. Если в файле хранится несколько изображений (формат
GIF, аналогично TIFF, позволяет в одном файле кодировать два и больше
изображений), то вместо общей таблицы цветов каждое изображение сопровождается
локальной таблицей цветов.
В файле GIF87a вслед за заголовком и общей таблицей цветов размещается
изображение, которое может быть первым из нескольких располагаемых
подряд изображений. Каждое изображение состоит из 10-байт описателя
изображения, расположенной вслед за ним локальной таблицы цветов
и битов растрового массива. Для повышения эффективности использования
памяти данные растрового массива сжимаются с помощью алгоритма LZW.
Файлы GIF89a имеют аналогичную структуру, но они могут содержать
факультативные блоки расширения с дополнительной информацией о каждом
изображении. В спецификации GIF89a определены четыре типа блоков
расширения. Это блоки расширения для управления графикой, которые
описывают, как изображение должно выводиться на экран (например,
накладывается ли оно на предыдущее изображение подобно диапозитиву
или просто заменяет его); блоки расширения с обычным текстом, содержащие
текст, отображаемый вместе с графикой; блоки расширения для комментария,
содержащие комментарии в коде ASCII; и блоки расширения прикладных
программ, в которых хранится информация, принадлежащая только создавшей
этот файл программе. Блоки расширения могут находиться практически
в любом месте файла после общей таблицы цветов.
Основные достоинства GIF заключаются в широком распространении этого
формата и его компактности. Но ему присущи два достаточно серьезных
недостатка. Один из них состоит в том, что в изображениях, хранящихся
в виде GIF-файла, не может быть использовано более 256 цветов. Второй,
возможно, еще более серьезный, заключается в том, что разработчики
программ, использующие в них форматы GIF, должны иметь лицензионное
соглашение с CompuServe и вносить плату за каждый экземпляр программы;
такая ценовая политика была принята CompuServe после того, как Unisys
объявила, что начнет добиваться соблюдения своих прав собственности
и потребовала от тех, кто пользуется алгоритмом сжатия LZW, вносить
лицензионные платежи. Возникшее в результате этого запутанное юридическое
положение тормозит внедрение программистами в свои графические программы
средств для работы с файлами GIF.
GIF — формат хранения графических изображений (англ. Graphics Interchange
Format). Формат GIF способен хранить сжатые без потерь изображения
в формате до 256 цветов с палитрой, и предназначен, в основном, для
чертежей, графиков и т. д.
Независящий от аппаратного обеспечения формат GIF был разработан
в 1987 году (GIF87a) фирмой CompuServe для передачи растровых изображений
по сетям. В 1989-м формат был модифицирован (GIF89a), были добавлены
поддержка прозрачности и анимации. GIF использует LZW-компрессию,
что позволяет неплохо сжимать файлы, в которых много однородных заливок
(логотипы, надписи, схемы).
GIF широко используется на страницах всемирной паутины.
Область применения
Изображение в формате GIF хранится построчно, поддерживается только
формат с индексированой палитрой цветов. Стандарт разрабатывался
для поддержи 256-цветовой палитры.
Недокументированой, но поддерживаемой возможностью является сохранение
большего количества цветов с помощью анимированного GIF с нулевой
задержкой между кадрами. При этом каждый кадр содержит свою палитру.
Один из цветов в палитре может быть объявлен «прозрачным». В этом
случае, в програмах которые поддерживают прозрачность GIF (например,
большинство современных браузеров) сквозь пиксели, окрашеные «прозрачным»
цветом будет виден фон. «Полупрозрачность» пикселей (технология альфа-канала)
не поддерживается.
Сжатие
GIF использует формат сжатия LZW. Таким образом, хорошо сжимаются
изображения, строки которых имеют повторяющиеся участки. Например,
изображения в которых много пикселей одного цвета по горизонтали.
Алгоритм сжатия LZW относится к форматам сжатия без потерь. Это
означает, что восстановленые из GIF данные будут в точности соответствовать
упакованым. Следует отметить, что это верно только для 8-битных изображений
с палитрой, для цветной фотографии потери будут обусловлены переводом
её к 256 цветам.
Кроме того, в программе Adobe Photoshop появилась дополнительная
возможность сохранять в GIF формат с потерями, которые проявляются
как стохастический шум на картинке, сокращая при этом объем файла.
Метод сжатия LZW (Lempel-Ziv-Welch) разработан в 1978 году израильтянами
Лемпелом и Зивом и доработан позднее в США. Сжимает данные путем
поиска одинаковых последовательностей (они называются фразы) во всем
файле. Выявленные последовательности сохраняются в таблице, им присваиваются
более короткие маркеры (ключи). Так, если в изображении имеются наборы
из розового, оранжевого и зеленого пикселов, повторяющиеся 50 раз,
LZW выявляет это, присваивает данному набору отдельное число (например,
7) и затем сохраняет эти данные 50 раз в виде числа 7. Метод LZW,
так же, как и RLE, лучше действует на участках однородных, свободных
от шума цветов, он действует гораздо лучше, чем RLE, при сжатии произвольных
графических данных, но процесс кодирования и распаковки происходит
медленнее.
Черезстрочный GIF
Формат GIF допускает черезстрочное хранение данных. При этом строки
разбиваются на группы, и меняется порядок хранения строк в файле.
При загрузке изображение проявляется постепенно, в несколько проходов.
GIF позволяет записывать изображение "через строчку" (Interlaced),
благодаря чему, имея только часть файла, можно увидеть изображение
целиком, но с меньшим разрешением. Это достигается за счет записи,
а затем подгрузки, сначала 1, 5, 10 и т.д. строчек пикселов и растягивания
данных между ними, вторым проходом следуют 2, 6, 11 строчки, разрешение
изображения в интернетовском браузере увеличивается. Таким образом,
задолго до окончания загрузки файла пользователь может понять, что
внутри и решить, стоит ли ждать, когда файл поднимется весь. Черезстрочная
запись незначительно увеличивает размер файла, но это, как правило,
оправдывается приобретаемым свойством.
Анимированные изображения
Формат GIF поддерживает анимационные изображения. Фрагменты представляют
собой последовательности нескольких статичных кадров, а также информацию
о том, сколько времени каждый кадр будет показан на экране. Анимация
может быть закольцована, тогда после последнего кадра будет вновь
показан первый и так далее.
История
Существует две спецификации формата GIF — GIF 87a и GIF 89a.
Первая спецификация была создана в 1987 году компанией CompuServe
для замены устаревшего формата RLE. GIF стал популярен в ходе развития
интернета, так как позволял использовать более компактные (по размеру
файла) по сравнению с другими форматами картинки на веб-страницах.
Хотя к настоящему времени формат во многом устарел, и для его замены
создан формат PNG, он по прежнему широко используется. |