ImageMagick Linux 模仿 ezgif.com 结果

ImageMagick Linux mimick ezgif.com result

Ezgif.com 是一个很棒的页面,但是 ImageMagick 可以得到相同的结果吗?

Ezgif settings:

Delay: 200 per image
Crossfade frames 
Fader delay: 6 
Frame Count: 10

我通过 Linux 终端的尝试:

convert -delay 200 -loop 0 *.jpg myimage.gif

这是 Unix shell 脚本,用于创建 4 个图像的褪色动画,每个图像有 10 个中间淡入淡出。它遍历每一对连续的图像,并通过以不同的百分比混合这对图像来创建褪色的中间图像。

输入:

(
imgArr=(lena.jpg mandril3.jpg zelda1.jpg peppers.jpg)
for ((i=0; i<4; i++)); do
    img1=${imgArr[$i]}
    j=$((i+1))
    jj=$((j%4))
    img2=${imgArr[$jj]}
    for ((k=0; k<11; k++)); do
        pct=$((10*k))
        convert $img1 $img2 -define compose:args=$pct -compose blend -composite miff:-
    done
done
) | convert -delay 20 - -loop 0 anim.gif

动画:

请注意,我必须将图片缩小到 75% 的尺寸,以使文件大小足够小以上传到此处。

正如我在 FL 上告诉你的,你只需使用

convert -resize (Smallest size) -delay 200 -morph 200 (source) (destination)

例如:

convert -resize 200x200 -delay 200 -morph 200 /var/home/user1/pictures/*.jpg /var/home/user1/myresult.gif

在我这边,我可以向您展示在 WINDOWS

上使用的结果

在 Windows 图片文件夹中 使用此命令:

C:\Users\Public\Pictures\Sample Pictures>convert -resize 20% -delay 20 -loop 0 *.jpg -morph 5 myimage.gif

一个完整的单线解决方案,增加了主框架的延迟和从最后到第一个转换,具有相同的设置 OP 要求:

convert -loop 0 *.jpg -morph 10 -set delay '%[fx:(t%11!=0)?6:200]' -duplicate 1,-2-1 out.gif

-morph 10在每个原始帧之间插入10个中间帧,所以我们需要每第11帧增加延迟时间,所以fx部分设置了不同的延迟时间他们。

-duplicate 1,-2-1 从最后一帧过渡到第一帧