как сделать этот эффект с помощью imagemagick - PullRequest
0 голосов
/ 21 сентября 2018

Картинка на заднем плане: фон

Окончательный эффект: GIF-эффект

Как заставить красное сердце двигаться и покрывать фонтекст?

Я пробовал это:

Конвертировать back.png (-clone1-гравитационный центр -геометрия + 10 + 10 heart.png) (-clone 1 *******)

Это просто перемещает сердце, но не охватывает текст.

Как заставить красное сердце двигаться и маскировать часть фонового текста?

С маской

1 Ответ

0 голосов
/ 22 сентября 2018

Вот один из способов использования Imagemagick.Сначала мне нужно вырезать форму сердца из одного из ваших кадров анимации, поскольку вы этого не предоставили.

Изображение сердца:

enter image description here

Фоновое изображение:

enter image description here

Сначала я создаю на рабочем столе новую папку с именем 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


enter image description here

Обратите внимание, что синтаксис Windows Imagemagick и сценариев отличается.Если какой-то добрый пользователь Windows захочет опубликовать конверсию, это было бы здорово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...