GIF, формат Graphics Interchange Format, был создан онлайн-сервисом CompuServe в конце 1980‑х, чтобы изображения могли передаваться по медленным dial-up‑подключениям и отображаться на компьютерах, которые расходились почти во всем остальном. Вторая и последняя ревизия формата добавила прозрачность и несколько кадров, и именно эта версия используется до сих пор. Спустя десятилетия GIF существует по одной причине: это самый простой способ поместить короткую, беззвучную, зацикленную анимацию туда, где ожидается обычное изображение.
Как GIF хранит изображение
GIF является без потерь, но сильно ограничен. Его сжатие, называемое LZW, заменяет повторяющиеся последовательности пикселей короткими кодами и при распаковке восстанавливает ровно то, что было записано. Ограничение заключается в цвете: каждый кадр может использовать максимум 256 цветов, выбранных из палитры, сохраненной в файле. У фотографии гораздо больше оттенков, поэтому сохранение ее в GIF заставляет кодировщик выбрать 256 цветов и приблизить все остальные, обычно с помощью дизеринга: рассеивания точек двух цветов для имитации третьего. Поэтому фотографические GIF выглядят зернистыми и полосатыми.
Прозрачность здесь все или ничего. Один из элементов палитры можно пометить как прозрачный, поэтому пиксель либо полностью прозрачный, либо полностью непрозрачный. Невозможно сделать мягкий, полупрозрачный край, поэтому логотипы в GIF часто имеют жесткий контур на неожиданном фоне.
Анимация - это просто несколько изображений, сохраненных одно за другим, каждое со своей палитрой, своей задержкой, измеряемой в сотых долях секунды, и инструкцией по удалению, которая указывает, что делать с предыдущим кадром. Небольшой дополнительный блок сообщает проигрывателю, сколько раз зациклить анимацию. Звука нет.
Какие метаданные содержит GIF
Это короткий раздел, и ответ действительно необычен: GIF практически не содержит никаких метаданных. Метаданные - это описательная информация, которую файл хранит о себе, и у GIF для нее почти нет места. Нет поля для настроек камеры, автора, даты, названия и нет места для GPS‑координат. Ни EXIF, ни IPTC, стандарты, которые несут эту информацию в фотографиях, никогда не были определены для GIF.
Отчет в основном может показать вам структуру, а не историю:
- Размеры изображения, размер таблицы цветов и то, сколько цветов реально используется.
- Количество кадров, задержку и метод удаления для каждого кадра, а также число циклов воспроизведения.
- Какой элемент палитры, если такой есть, помечен как прозрачный.
- Является ли изображение чересстрочным, старый прием, который позволял показать грубый вариант до окончания загрузки файла.
- Блоки комментариев. GIF допускает произвольные текстовые комментарии, и программы иногда записывают туда свое название, строку об авторских правах или адрес источника. Это единственное место, где, скорее всего, может встретиться какое-либо имя.
- Блоки приложения. Помимо блока, используемого для зацикливания, Adobe определила блок, который может нести внутри GIF полный пакет метаданных XMP. Это редкость, но именно поэтому отчет может показать XMP в GIF.
Это работает в обе стороны. GIF вряд ли раскроет ваше местоположение или серийный номер камеры, потому что ему негде их хранить. Но это не анонимность: анимация, сделанная из фото или видео, все равно показывает то, что видно по пикселям, а любой блок комментариев остается в файле, пока кто‑то его не удалит.
Когда использовать GIF
Используйте GIF для короткой зацикленной анимации, которая должна работать как обычное изображение: в окне чата, сообщении на форуме или письме. Для статического изображения больше нет веских причин выбирать его: PNG дает меньший размер для той же плоской графики и сохраняет полный цвет, а JPG гораздо компактнее для фотографий.
Для анимации честнее сравнивать GIF с видео. Клип MP4 или WebM с теми же несколькими секундами обычно занимает лишь долю объема и передает плавные цвета. WebP и APNG тоже поддерживают анимацию с полным цветом и нормальной прозрачностью. Преимущество GIF не в качестве и не в размере; в том, что его принимают повсюду и всеми средствами.