Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Как сэкономить один байт в GIF

Trailer (7.79КиБ)

Я понимаю, один байт — не бог весть что, но, возможно, кому-то и такая мелочь будет приятна. Например, полезно во всяких конкурсах, вроде JS1K и т. п.

Файл в формате GIF должен заканчиваться символом с кодом 0x3B («;»), который называется «trailer». На самом деле, этот символ чаще всего не требуется декодерами (хотя обязателен в стандарте). Я проверил на сервисе скриншотов, все браузеры, которые там перечислены, кроме Konqueror 4.2 и выше, поддерживают файлы GIF без этого байта.

Я так же вывесил такой GIF у себя на сайте, обнаружилось, что его так же не поняли агенты, которые подписываются как Java/1.6.0_xx (думаю, это какие-то браузеры на J2ME).

Вывод: если вас это не смущает, то можете сократить свои GIFы на один байт. Или, напротив, проверьте имеют ли ваши GIF этот байт, если для вас почему-то важны эти браузеры (основанные на J2ME и Konqueror 4.xx).

4 комментария
u1itka 2011

А как ты понял, что этот GIF не смогли понять агенты на Java/1.6.0?

Евгений Степанищев (bolknote.ru) 2011

Комментарий для u1itka:

Я поместил такой GIF на своём сайте, на onerror этой картинки повесил вызов логгера useragent’а. «Поймалось» несколько браузеров, я их все перечислил.

besisland (besisland.name) 2011

После трейлера могут идти произвольные данные?

Евгений Степанищев (bolknote.ru) 2011

Комментарий для besisland.name:

Судя по описанию формата, да. Но возможно я что-то не так понял. В любом случае, внутри extension можно хранить произвольные данные.