Вот один из способов использования Imagemagick.Сначала мне нужно вырезать форму сердца из одного из ваших кадров анимации, поскольку вы этого не предоставили.
Изображение сердца:
Фоновое изображение:
Сначала я создаю на рабочем столе новую папку с именем test и помещаю в нее оба изображения.
Вот код в (Bash) Unix-синтаксисе.
Я начинаю задом наперед с правой стороны влево от фона.Затем индексы i меняются местами с помощью j = (55-i) для последующего объединения в алфавитном порядке.Вычисление jj добавляет начальный ноль к индексам меньше 10, так что все кадры перечислены в тестовой папке в алфавитном порядке.
Для каждого кадра он извлекает альфа-канал фона и рисует черный прямоугольникна правой стороне, а затем помещает этот результат обратно в альфа-канал фонового изображения, используя -compose copy_opacity -composite
.Это эффективно помещает прозрачность, где розовые буквы.Затем я комбинирую изображение сердца как соответствующий левый край того места, где я нарисовал черный прямоугольник.
После завершения цикла я собираю все кадры из тестового каталога с именами, начинающимися с tmp_, и создаю gif-анимацию, которую я записываю на рабочий стол.
x=564
for ((i=0; i<56; i++)); do
j=$((55-i))
jj=`printf "%02d\n" $j`
convert background.png \
\( -clone 0 -alpha extract -fill black -draw "rectangle $x,0 639,123" \) \
-alpha off -compose copy_opacity -composite \
heartshape.png -geometry +${x}+28 -compose over -composite tmp_$jj.gif
x=$((x-8))
done
convert -dispose background -delay 10 tmp_*.gif -loop 0 ../heart_animation.gif
Обратите внимание, что синтаксис Windows Imagemagick и сценариев отличается.Если какой-то добрый пользователь Windows захочет опубликовать конверсию, это было бы здорово.