Как стать автором
Обновить

Комментарии 57

У меня одного первая картинка долго отрисовывалась? Интересно, остальные уже отображаются, а первая заполняется как шахматное поле маленькими клеточками примерно в течение 3 сек. Браузер Chrome.
Она отрисовывается в прямом смысле. Это GIF-анимация.
Не думаю, после рефреша страницы эффект не повторился.
Если бы была анимация, была бы такая же отрисовка. А так, видимо, отрендеренная страница отобразилась из какого-то буфера.
Забавно, если попытаться сохранить 173 кадра через GIMP с 0ms интервалом, то GIMP матюкнется и скажет что сам встраивает задержку дабы 'не перегружать процессор сложной анимацией'.

Так что постепенная отрисовка может быть частью какого-то механизма защиты от пиковых нагрузок, в связи с тем что браузеры вряд ли подозревают о существовании многоблочных truecolor GIF )
Необязательно защита, это может быть и намеренно добавленная пауза для корректной отрисовки других изображений (я не про GIMP, я вообще). Например, когда в Total Commander была добавлена встроенная (без плагинов) поддержка GIF-изображений, пользователи тут же стали натыкаться на самые разные картинки, у которых анимация шла с реактивной скоростью, тогда как во всех программах-просмотрщиках скорость была нормальной. И автору Тотала пришлось добавлять принудительную задержку между кадрами (конфигурируемое минимальное значение паузы).

Так что, судя по всему, имеет место быть порочный круг, когда разные пользователи продолжают плодить кривые гифки с нулевой паузой, не зная, что это неправильно, потому что во всех программах они показываются нормально. А разработчики программ не могут убрать паузу, потому что тогда все эти гифки начнут отображаться некорректно, и пользователи будут недовольны.
Это анимация, гимп показывает 173 кадра с 0-й задержкой.
Принцип действия, на сколько я понимаю, — не более 256 цветов в одном слое, моментальная покадровая отрисовка и вуаля — полноцветное изображение.

Вот только не учтено, что сам рендеринг у программ может быть разный, как пример, вставляются дополнительные паузы между кадрами.
Такой таймаут в формате не описан, по этому браузеры отрисовывают его как хотят, а при повторной загрузке изображение берется из кэша
У меня после Ctrl+F5 эффект повторился.
У меня повторяется из раза в раз.
На каждом скроллинге отрисовка начинается сначала.
Забавно, что только при сколлинге вверх.
Опера чтоли?
В опере анимация Гифа перезапускается, если гиф полностью исчезал с экрана. Похоже, это фича.
у меня такого не наблюдается, кстати закешировалась и теперь не перерисовывается пока ф5 не обновишь. FF 14.0.1
Это не совсем анимация.
Там 173 блока (GIMP видит их как кадры с с задержкой в 0ms), т.е. оно должно отрисовываться мгновенно.
В каждом блоке-кадре не более 256 уникальных цветов, если их сложить, то будет 32697.
3 секунды? Это еще хорошо. У меня оно секунд 20 рисуется.
Ага, секунд 10-15, что в Опере, что в Хроме. Только в опере перерисовывается каждый раз, когда картинка исчезает из поля зрения.
У меня в Firefox тоже секунд 20.
Стоит запостить баг во всех браузерах ;)
Видели бы вы как в ACDSee эта картинка рисуется…
Тоже медленно, так еще и некорректно, фон переливается всеми цветами, а квадратики «пачкаются»черными полосасми.

image
В XnView рисуется нормально, но уходит в цикл. Поэтому насладиться полным видом картинки не удаётся.
Я так понимаю, первое изображение это анимация, а не особенность отрисовки?
И кстати, это изображение некорректно отображается в локальном viewer'е (использую gpl Imagine) – последовательно показываются все цвета вместо градиента.

А вообще очень удивили! Спасибо за информацию!
И, кстати, если это анимация, то насколько меньше размер этого же изображения с одним кадром?
если все блоки-слои слепить в один то уже не будет truecolor, а размер будет как у второй картинки
даже если просто попытаться пересохранить этот файл, то будет 256 цветов, только в 173 кадрах
Не думаю что неизвестный англоязычный, предположительно весьма бородатый, автор читал русскоязычный блог bolk'а)

Хотя я не удивлен что именно bolk пытался ковырять truecolor GIF
Не думаю что неизвестный англоязычный, предположительно весьма бородатый, автор читал русскоязычный блог bolk'а)

Ну, как раз через десяток копипастов и переводов за год и дошло :)
Последнее изменение на странице-источнике перевода было в: «Вто 03 Окт 2006 05:11:59»
ANGIF был еще раньше: first rough beta release.датирован 30 Jan 2001 06:12

Но, судя по всему, мало кто знал об этом )
НЛО прилетело и опубликовало эту надпись здесь
ok.
Не думаю что неизвестный англоязычный, предположительно весьма бородатый, автор читал русскоязычный сайтик Лебедева
интересно, читал ли Лебедева bolk
В общем, это оказывается любопытным и малоизвестным фактом, который имеет малую практическую пользу.
Да лаааадно… теперь прыгающие гифки на народе будут еще красивее!
Не будут. В примере показана анимация с нулевой задержкой. И все равно рендерится очень долго. А это, считайте, всего лишь 1 виртуальный кадр.
Интересно, но на каждый слой всё равно не больше 256 цветов…
Кстати, как всегда решение глючит в ИЕ9. Появляются вертикальные белые полосы между фреймами, а при изменении масштаба и вовсе сетка, пруф:
Скрытый текст
А если по правому меню «скопировать», то копируется только первый слой (маленький красный квадрат).
В Opera еще веселее, квадратики появляются на черном фоне, и когда скролишь чуть-чуть вниз, то картинка начинает заново перерисовываться (если она еще не успела отрисоваться до конца). Потом когда картинка отрисована, стоит сделать чтобы картинка ушла из области видимости (скролинг, переключение на другую вкладку), и при возврате она снова перерисовывается.
Смотрел в Opera 12.
при возврате она снова перерисовывается.

Вот именно эта часть, насколько я знаю — не бага, а фича. Вся анимация перерисовывается при уходе и входе в область видимости.
Это таки бага. Если в гифке прописано, что анимировать один раз, то только в случае перезагрузки страницы оно должно переанимировать заново.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Надо порыться в спецификациях, может GIF еще и альфа-канал поддерживает :)
НЛО прилетело и опубликовало эту надпись здесь
Не поддерживала. Это не альфа-канал называется, а бит прозрачности. Альфа-канал отвечает за полупрозрачность.
В 8-цветных изображениях (3 бита, по одному на каждый канал) никому не приходило в голову биты каналами называть.
А true color разьве не 16777216 цветов
а кто мешает? Только слоёв будет ооочень много
Мешает, наверное, здравый смысл.
НЛО прилетело и опубликовало эту надпись здесь
У меня при повторной загрузке страницы отрисовывается моментально.
Ну в статье как обычно «не вся правда» :) таки палитра гиф изображения ограничена 256 цветами. Другое дело что цвета в палитре заданы реальным truecolor. В этой гифке использовали «фичу» анимации и видимо для разных кадров умудрились выставить разную палитру.
Такие GIF-ы стары как мир. Многие не знают о такой возможности и в основном из-за того, что программы в большинстве своем не предоставляют такую возможность. Мало того, даже программы для просмотра не всегда правильно отображают такие картинки. Браузеры корректно отображают, но время рендера не соответствует спецификации.
Delay Time — If not 0, this field specifies the number of hundredths (1/100) of a second to wait before continuing with the processing of the Data Stream.

Process each graphic in the Data Stream in sequence, without delays other than those specified in the control information.

Как ни странно, обычный Paint открывает такие GIF-ы правильно и без задержек, при том сама система, в проводнике и встроенном просмотре, отображает только первый кадр.

В своей программе CQ я реализовал возможность записи GIF-ов с любым количеством цветов, кому интересно можете поиграться. От себя замечу, что целесообразность очень сомнительная. Однако для большинства изображений достаточно всего нескольких тысяч цветов и с такими параметрами GIF-ы получаются не такими увесистыми как с полным набором цветов, хотя и больше PNG.


GIF 3942 цветов / 58,6 кб
а что на счёт исходников? :)
Исходники!? Там пару строк кода =)
Алгоритм простой:
— собираем все уникальные цвета
— упорядочиваем (от способа будет зависеть эффект прорисовки и конечный размер файла)
— разбиваем все это дело на куски по 256 цветов (локальные палитры для каждого кадра)
— пишем кадры из имеющихся локальных палитр.
НЛО прилетело и опубликовало эту надпись здесь
в Андроидном браузере первое изображение сплошной красный цвет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории