ImageMagick 转换命令从大量 .xpm 文件中生成 .gif

ImageMagick 转换命令从大量 .xpm 文件中生成 .gif

.xpm我需要将我的代码生成的大量(~10k)文件转换为一个.gif文件。

我按照这里的说明使用了 ImageMagick:如何将 PNG 条带转换为 GIF?

但是我的文件名是这样的plot*.xpm,*从 0 到 10000,而转换命令似乎无法正确理解它,并且只生成.gif一个只有几帧的文件。

我的.xpm文件是这样的

它们以蓝点和绿点的非随机分布结束。(比如中间有一个蓝色圆圈)比如说第 1000 帧。(由于发布限制,我无法附上它的图片)

但这是.gif我得到的文件

我使用这行代码: convert -loop 0 -delay 10 -page +0+0 /*.xpm output.gif

我认为我应该使用另一种方法将.xpm文件引入 ImageMagick。
我应该怎么做?

答案1

看起来您的所有图片都已转换,但顺序不如您所期望的正确。

根据我的经验,这些convert命令无法处理与您使用的文件名格式相同的文件。它适用于以下类型的文件:

file100
file10
file11
file1
file200
file20
file21
file2
...

因此,您需要在转换之前重命名所有文件。因此,您的文件名应如下所示:

file00001
file00002
...
file00010
...
file10000

这是我写的。看看使用它是否可以解决你的问题:

rename 's/plot(\d{1})\.xpm/plot0000$1\.xpm/' *  # plot#.xpm     >    plot0000#.xpm
rename 's/plot(\d{2})\.xpm/plot000$1\.xpm/' *   # plot##.xpm    >    plot000##.xpm
rename 's/plot(\d{3})\.xpm/plot00$1\.xpm/' *    # plot###.xpm   >    plot00###.xpm
rename 's/plot(\d{4})\.xpm/plot0$1\.xpm/' * # plot####.xpm  >    plot0####.xpm

convert -loop 0 -delay 10 *.xpm output.gif

相关内容