ImageMagick: Как применить задержки одного кадра к кадру для другого изображения? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть рабочий процесс, в котором я беру gif-файлы от клиента, преобразую их из gif в спрайт-листы (png), над которыми я могу работать, а затем преобразую их обратно в gif-файлы для отправки обратно.Однако задержки кадров в их GIF-файлах важны, поэтому мне нужно их сохранить.

Можно ли как-нибудь захватить задержки кадров в одном GIF-файле и применить их к другому GIF-файлу с помощью утилит командной строки ImageMagick?Я делаю это через пакетный файл .bat на Windows.GIF-изображения имеют одинаковые размеры и количество кадров.

1 Ответ

0 голосов
/ 02 февраля 2019

В Imagemagick 6 вы можете использовать формат строки% T, чтобы получить задержку анимации.Поместите его в переменную и затем используйте переменную для задержки следующей анимации.См. https://imagemagick.org/script/escape.php

convert -delay 100 rose: rose: rose: -loop 0 anim.gif

convert anim.gif -format "%T\n" info: | head -n 1
100

Обратите внимание, что без привязки к заголовку -n 1 Imagemagick будет повторять задержку один раз для каждого кадра.

Для Imagemagick 7 используйте магию, а не конвертируйте.В Windows .bat удвойте% до %%.

. Для Windows вам может понадобиться найти эквивалентный инструмент для заголовка -n 1 или просто проанализировать вывод текста из% T, чтобы извлечь только одно значение из всехповторяется для каждого кадра.

...