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..........|
00000010 00 00 00 21 f9 04 00 00 00 00 00 21 ff 0b 49 43 |...!.......!..IC|
00000020 43 52 47 42 47 31 30 31 32 ff 00 00 03 f0 55 43 |CRGBG1012.....UC|
00000030 43 4d 02 40 00 00 6d 6e 74 72 52 47 42 20 58 59 |CM.@..mntrRGB XY|


Пока не все браузеры умеют поддерживать цветовые профили ГИФ (как и профили любого другого формата), так ФФ не научился делать это до сих пор, а «Опера» научится это делать в новой версии 12.50.

Проверить поддерживает ли браузер цветовые профили можно и через Джаваскрипт. Принцип такой: я загружаю ГИФ-изображение 1×1 с цветовым профилем в тег CANVAS, потом проверяю цвет точки, он должен быть определённого цвета. Проверить поддерживает ли ваш браузер цветовой профиль четвёртой версии ГИФ можно у меня на сайте, в разделе «Храню».
29 августа 2012 07:19

SiMM (mr-simm.livejournal.com)
29 августа 2012, 11:26

тем не менее, вы видели анимации, где *строит* определённое количество повторений и браузеры как-то это понимают
Стоит?

Кирилл (инкогнито)
29 августа 2012, 11:52

Your browser do not support GIF ICC profile!
does not?

У меня в 21 хроме тоже пишет, что не поддерживает. Кто тогда поддерживает, если ФФ, хром и опера - нет?

bolk (bolknote.ru)
29 августа 2012, 12:26, ответ предназначен SiMM (mr-simm.livejournal.com):

Спасибо!

bolk (bolknote.ru)
29 августа 2012, 13:08, ответ предназначен Кириллу

does not?
Ага, глупая ошибка, не проснулся.
У меня в 21 хроме тоже пишет, что не поддерживает. Кто тогда поддерживает, если ФФ, хром и опера - нет?
«Сафари», новая «Опера», IE9, FF поддерживает версию 2 (я внедрил в GIF четвёртую версию).

masterspammer (masterspammer.livejournal.com)
29 августа 2012, 14:09

Интересная мысль - поддержка текстовых слоёв тоже может быть проверена через canvas.

Другое дело, что там сразу можно писать "не поддерживается" - не нашёл софта младше 10 лет, который бы это поддерживал.

bolk (bolknote.ru)
29 августа 2012, 15:20, ответ предназначен masterspammer.livejournal.com:

Другое дело, что там сразу можно писать «не поддерживается»
Да, я тоже как-то искал софт, который бы это поддерживал (http://bolknote.ru/2009/10/06/~2268), из браузеров ни один не поддерживал.

masterspammer (masterspammer.livejournal.com)
30 августа 2012, 09:42, ответ предназначен bolk (bolknote.ru):

Я именно эту запись и вспоминал.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)