Как поместить GIF в другой GIF с помощью ImageMagick, где оба GIF имеют разные размеры
У меня есть два гифки разных размеров. Я хочу иметь возможность поместить один анимированный GIF на статический фоновый GIF в определенном месте и в то же время добавить текст к результату. Я новичок в мире ImageMagick, пожалуйста, помогите.
Я пытаюсь добиться следующего результата, где наклейка для собаки находится в отдельном GIF.
2 ответа
Если две анимации не имеют одинаковую задержку и количество кадров, см. https://www.imagemagick.org/Usage/anim_mods/.
Если ваша анимация имеет одинаковую задержку и количество кадров, вы можете сделать это (синтаксис Unix):
convert skyblue.gif \
null: \
\( morph_anim_1pt.gif -coalesce \) \
-gravity northwest -geometry +20+20 -compose over -layers composite \
null: \
\( morph_anim_5pts.gif -coalesce \) \
-gravity southeast -geometry +20+20 -compose over -layers composite \
-layers optimize \
result.gif
См. https://www.imagemagick.org/Usage/anim_mods/ и последующие разделы.
Возможно, это больше, чем вы хотите. Код командной строки Imagemagick в синтаксисе Unix:
Фоновая анимация имеет 3 кадра, а передняя - 11 кадров. Поэтому я повторяю фон 4 раза и удаляю последний кадр, так что в общей сложности 11 кадров для фона. Я объединяю анимацию и добавляю текст в каждый кадр, используя -annotate. Затем я использую композитный слой -layers для наложения анимации переднего плана на фон.
Фон:
Передний план:
convert -delay 20 \
\( glitter_blue_tiled.gif glitter_blue_tiled.gif \
glitter_blue_tiled.gif glitter_blue_tiled.gif \
-coalesce \
+delete \
-font arial -pointsize 28 -fill black -gravity north \
-annotate +0+20 "TESTING" \) \
null: \
\( coalesced_k.gif -coalesce \) \
-gravity south -geometry +0+20 \
-compose over \
-layers composite \
-layers optimize \
-loop 0 \
result2.gif