Я использую ImageMagick, чтобы превратить коллекцию PNG в один GIF. Я хочу, чтобы этот GIF зациклился как можно быстрее.
Это примерно то, что я ожидаю (любезно предоставлено Википедией ):
Это вывод, который я на самом деле получаю:
В моем браузере (Firefox 17) ожидаемый gif работает более чем в два раза быстрее, чем фактический gif. Это удивляет меня, потому что я указал, что каждый кадр должен иметь 0 задержек.
Сначала я создал 36 png, взорвав gif, заимствованный из Википедии:
--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png
Затем я использовал coalesce
рекомбинацию PNG в один GIF.
convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif
identify
подтверждает, что каждый кадр не имеет задержки:
identify.exe -format "%T, " output.gif
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Это на самом деле меньше задержки, чем оригинал:
identify.exe -format "%T, " newton.gif
5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2,
Фактический GIF имеет меньшую задержку, чем ожидаемый GIF. Так почему же ожидаемый гиф в два раза быстрее, чем реальный гиф?
источник
-delay 2
.Ответы:
Я экспериментировал и создал версию 10 мс (задержка = 1).
Кажется, что программы, которые рендерит гифки, как правило, не учитывают частоту задержки в 0 сотых секунды. Вместо этого они используют значение, которое намного больше, чем небольшое значение, которое вы выбрали.
Я не могу по-настоящему прокомментировать причины, по которым они это делают. Я сталкивался с более чем одной причиной, и вполне возможно, что все это предположение.
В целом, я бы рекомендовал использовать задержку не менее двух сотен секунд во всех случаях.
Источники (которые демонстрируют, как на это может быть несколько причин. Некоторые из них относительно старые):
источник
Похоже, @DavidMah прав. В моей системе Linux минимальная задержка составляет 0,5:
По некоторым причинам изображения не отображаются должным образом в моем браузере. Используя локальную программу просмотра изображений (
eom
), 1-е изображение работает медленнее, чем в оригинальном вопросе, а оба других быстрее, чем в Википедии. Я пишу в любом случае, если это проблема, специфичная для моего браузера. В любом случае, вы должны получить лучшую скорость, если вы попробуете команды, опубликованные выше.ОБНОВЛЕНИЕ: Кажется, есть 2 проблемы. Браузеры (по крайней мере, у Firefox и Chromium работают в Linux) не могут отображать GIF-файлы, созданные с задержкой <1,5. 1.5 работает отлично, 1.4 медленно. Мой просмотрщик изображений может работать с задержками от 0,5 и выше. Попробуйте загрузить одно из приведенных выше изображений и открыть его в своем любимом просмотрщике изображений. Также взгляните на это:
UPDATE2: @DavidMah указывает в комментариях ниже, что десятичные значения округляются до ближайшего целого числа. Итак, 1.4 округляется до 1, что слишком медленно, а 1,5 округляется до 2, что нормально.
источник
Я добился большего успеха, используя
XxY
обозначение задержки, по сути,x
это как a/
, поэтому, если вы укажете-delay 1x20
, кадр будет отображаться в течение 1/20 секунды.источник