这是我在这里的第一篇文章,我将在解释中尽量简明扼要。
我正在尝试为我的网站创建一个非常简单的GIF动画,自从我昨天开始使用ImageMagick以来,我在这个世界上是全新的,我遇到了严重的问题,无法获得我想要的结果。动画只包含2个无限交换的帧。在这里,您可以看到basic animation。
正如您所看到的,动画由几个字符组成,这些字符在透明背景上逐帧更改。到目前为止没问题。问题是我希望从一帧到另一帧的转换为尽可能平滑 ,而不仅仅是一个基本的开关。我找到了在文档中定义这种转换的方法。但是,此命令无法创建我需要的动画,因为背景透明度,因为它会在过渡期间破坏透明度并且会让它变得很乱!如果我改变背景颜色,比方说,黑色一切都按预期工作......在这里你可以找到transparent background上的动画。
这些是我使用的命令:
convert logo_1.png logo_3.png -morph 15 -set delay 10 \( -clone 0 -set delay 240 \) -swap 0 +delete \
\( +clone -set delay 240 \) +swap +delete \
-duplicate 1,-2-1 logo_anim_9.gif
convert -alpha Set logo_1.png logo_3.png -morph 15 -set delay 10 \( -clone 0 -set delay 240 \) -swap 0 +delete \
\( +clone -set delay 240 \) +swap +delete \
-duplicate 1,-2-1 logo_anim_11.gif
然而,-alpha Set
没有关于透明背景...
如果有人可以帮我解决这个问题,我将非常感激,因为我对使用这个软件非常缺乏经验,我希望通过透明背景的软转换来获得动画。
非常感谢提前。
祝你好运
答案 0 :(得分:0)
上床睡觉了,我还没有破解它,但是以下内容可能会帮助你解决这个问题。
提示1
此命令可用于调试动画:
identify -format "Scene:%s Time:%T Geom:%g Dispose:%D\n" log*9*
Scene:0 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:1 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:2 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:3 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:4 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:5 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:6 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:7 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:8 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:9 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:10 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:11 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:12 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:13 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:14 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:15 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:16 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:17 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:18 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:19 Time:40 Geom:300x240+0+0 Dispose:Previous
Scene:20 Time:40 Geom:300x240+0+0 Dispose:Previous
提示2
-morph
生成的初始图片看起来不对。您可以使用+append
这样并排查看它们:
convert logo_1.png logo_3.png -morph 15 +append result.png
我尝试用这个手动生成它们:
#!/bin/bash -xv
rm frame-*png
f=0
for p in $(seq 0 5 100); do
echo Percentage: $p
name=$(printf "frame-%02d.png" $f)
convert logo_1.png logo_3.png -compose blend -define compose:args=$p -composite $name
((f++))
done
convert frame-*png +append result.png
他们就在这条线之上,但是你无法看到它们: - )
提示3
尝试使用-dispose
进行试验。您可以通过以下方式查看可用选项:
identify -list dispose
Undefined
Background
None
Previous
0
1
2
3
所以,试试:
convert -dispose previous ...