ICC-профили в GIF
Формат ГИФ почему-то окружён каким-то нереальным количеством мифов, хотя до недавнего времени он был очень популярен, а для анимации до сих пор остаётся единственным универсальным форматом.
Например, считается, что анимация появилась только в версии 89a (неправда, она была уже в версии 87a, в 89а её возможности были расширены), что ГИФ может использовать не более 256 цветов (не совсем так — не более 256 цветов на кадр, кадры могут накладываться друг на друга, давая любое отображаемое компьютером количество цветов).
Другое распространённое заблуждение — что ГИФ не поддерживает цветовые профили (ICC).
В самом деле, если посмотреть спецификацию формата, то слово «ICC» там не найдётся, но не найдётся там и слова «loop» (здесь: количество повторов), тем не менее, вы видели анимации, где указано определённое количество повторений и браузеры как-то это понимают.
Дело в том, что формат ГИФ поддерживает расширения. Расширения в спецификацию формата не входят.
Упомянутое количество повторов анимации задаётся в расширении, которое было когда-то предложено фирмой «Нетскейп» и потому имеет заголовок «NETSCAPE2.0», у расширения, которое содержит цветовой профиль заголовок другой — «ICCRGBG1012». ГИФ всегда разбит на блоки, и блок расширения (любого) помечен специальным флагом; заголовок расширения позволяет просмотрщику (в нашем случае — браузеру) решить с каким из расширений формата он имеет дело.
Вот начало файла ГИФ с внедрённым профилем:
00000000 47 49 46 38 39 61 01 00 01 00 f0 00 00 fe 00 02 |GIF89a..........| |
Пока не все браузеры умеют поддерживать цветовые профили ГИФ (как и профили любого другого формата), так ФФ не научился делать это до сих пор, а «Опера» научится это делать в новой версии 12.50.
Проверить поддерживает ли браузер цветовые профили можно и через Джаваскрипт. Принцип такой: я загружаю ГИФ-изображение 1×1 с цветовым профилем в тег CANVAS, потом проверяю цвет точки, он должен быть определённого цвета. Проверить поддерживает ли ваш браузер цветовой профиль четвёртой версии ГИФ можно у меня на сайте, в разделе «Храню».
Стоит?
does not?
У меня в 21 хроме тоже пишет, что не поддерживает. Кто тогда поддерживает, если ФФ, хром и опера — нет?
Комментарий для mr-simm.livejournal.com:
Спасибо!
Комментарий для Кирилл:
Ага, глупая ошибка, не проснулся.
«Сафари», новая «Опера», IE9, FF поддерживает версию 2 (я внедрил в GIF четвёртую версию).
Интересная мысль — поддержка текстовых слоёв тоже может быть проверена через canvas.
Другое дело, что там сразу можно писать «не поддерживается» — не нашёл софта младше 10 лет, который бы это поддерживал.
Комментарий для masterspammer.livejournal.com:
Да, я тоже как-то искал софт, который бы это поддерживал ( http://bolknote.ru/all/2268 ), из браузеров ни один не поддерживал.
Комментарий для Евгения Степанищева:
Я именно эту запись и вспоминал.