Есть ли какой-нибудь способ использовать imagemagic / montage для создания анимированных GIF-изображений с петлями (смешанных с неанимированными)?
То есть я хочу объединить анимацию в пространстве, а не во времени. Я понимаю, что количество кадров и их продолжительность в анимации могут сделать невозможным аккуратное объединение двух анимаций. Но я в порядке с программой, делающей аппроксимации и предположения, и расширяющей / повторяющей кадры, если все кадры там каким-то образом присутствуют.
я пробовал
convert *.gif -append output.gif
а также
montage *.gif -mode concatenate -tile x1 output.gif
но оба они рассматривают анимированные картинки как несколько отдельных неанимированных.
Я полагаю, что я мог бы написать скрипт, чтобы разбить анимированные кадры на части, повторять / расширять более короткие циклы по мере необходимости, чтобы соответствовать самому длинному циклу, повторять неанимированные GIF-изображения, так как много кадров находятся в самом длинном анимированном кадре, сшивать вместе соответствующие кадры в один большой кадр с -append
, а затем объединить эти большие кадры в один большой GIF. Но я не хочу изобретать велосипед, если это уже возможно с помощью простой команды.
Я, конечно, открыт для других бесплатных опций, кроме imagemagick.
источник
Ответы:
Звучит так, как будто вы хотите согласовать несколько анимаций во времени, но для этого потребуется программа, которая будет считывать каждый кадр и его задержку, а затем выводить этот кадр с некоторой периодической частотой, пока задержка не будет достигнута. Например: 1 кадр, задержка в 1 секунду, и ваша «частота» составляет 100 мс, так что вы хотите записать 10 кадров при 100 мс? А потом перевести на линейный монтаж?
Для этого потребуется программа или здоровенный сценарий для выполнения такой обработки, и вам нужно будет определить свою «частоту» (100 мс здесь).
Но это работает хорошо: (gifsicle - это пакет, монтаж - это часть пакета imagemagick)
(строка разорвана для удобства чтения)
Первая строка разбивает входящий GIF на отдельные кадры (на стандартный вывод), но с заполненными слоями. Первоначально, без опции --unoptimize, это дало бы первый кадр, но последующие кадры содержали только то, что менялось каждый раз. Сделано для странных монтажов!
Вторая строка строит линейный вывод, беря каждое изображение кадра (из стандартного ввода) и упорядочивая их в указанном вами порядке. «х1» расположить их вдоль горизонтальной линии.
Вы можете заменить одно имя файла (cool_animation.gif) на несколько или даже подстановочный знак * .gif.
Я не уверен, что это то, что вы ищете, хотя.
источник
gifsicle --colors=255 DATA.gif | gifsicle --unoptimize | montage -tile x1 - linear_frames.png
для тестового изображения Ƭᴇcʜιᴇ007 это дает мне imgur.com/a/Likr9 ; не совсем то, что я ищу. Я не могу вспомнить первоначальную цель; Я полагаю, я, вероятно, только что написал сценарий, чтобы разобрать все это явно.