ImageMagick `-duplicate` 但到序列开头

问题描述 投票:0回答:2

-重复

convert img*.png -duplicate 3 out.gif

使

0 1 2 2 2 2

其中

0
img0.png
1
img1.png
等,制作GIF。但我可以做下面吗?

0 0 0 0 1 2 2 2 2

也就是说,追加到结束开始?我知道我可以使用索引来制作

0 1 2 2 2 2 0 0 0

这在循环中是相同的,但我需要在上下文中开始时使用

0

imagemagick
2个回答
3
投票

TL;DR

0 0 0 1 2 3 ... 20 21 21 21
(任意数量的图像)做

convert img*.png -write mpr:imgs -delete 0--1 mpr:imgs[0,0,0,1--1,-1,-1] out.gif

注意:避免多余的逗号,例如

mpr::imgs[1--1,]
插入帧
0
(甚至没有选择!)作为最后一帧。


在 Windows 命令行上使用 ImageMagick v6,此命令将让您以任何您需要的方式排列图像的顺序和数量。

convert img*.png -write mpr:imgs -delete 0--1 mpr:imgs[0,1,2,2,2,2,0,0,0] out.gif

读取 3 个输入图像,将它们全部复制到名为“mpr:imgs”的内存寄存器中,从命令中删除输入图像,然后按照您在方括号中指定的方式从该内存寄存器中读取图像。图像索引 0 是读入命令的第一张图像,1 是第二张图像,依此类推。

此外,使用

-duplicate
您可以根据列表中的顺序指定要使用列表中的图像。该命令将给出与上面相同的结果...

convert img*.png -duplicate 3 -duplicate 3,0 out.gif

该命令读取三个图像,然后

-duplicate 3
再生成列表中最后一个图像的3个,然后
-duplicate 3,0
再生成列表中第一个图像的3个,索引为0。

另一种方法是在括号内使用

( -clone ... )

 按照您想要的顺序创建重复项的数量。

convert img*.png ( -clone 2,2,2 -clone 0,0,0 ) out.gif
读取 3 个输入图像,克隆第三个图像 3 次,然后克隆第一个图像 3 次,得到与上述命令相同的结果。

这些命令采用 Windows 语法。对于 *nix 操作系统,您必须使用反斜杠“\(...\)”转义括号。

还可以使用

-swap

-reverse
-insert
-delete
 来操纵列表中图像的顺序。


2
投票
您应该能够加载第一个图像,进行所需的任何重复,然后加载第二个图像并进行重复,加载第三个图像并进行任何重复:

convert img0.png -duplicate 3 img1.png img2.png -duplicate 3 ...
将给出您想要的图像序列:

0 0 0 0 1 2 2 2 2
    
© www.soinside.com 2019 - 2024. All rights reserved.