ImageMagick:错误的帧顺序GIF

时间:2017-08-16 23:12:48

标签: imagemagick imagemagick-convert scilab

我尝试使用从Scilab导出的一些帧来创建GIF。框架命名为anim_1.gif,anim_2.gif ......依此类推,直到100

我在Windows shell中使用此行来创建GIF:

def sample_difference(filename):
    df = pd.read_csv(filename, header=None, names=['timestamp', 'time skipped', 'x', 'y', 'z', 'label'],
                 skipinitialspace=True)
    df.timestamp = pd.to_datetime(df.timestamp)  # Convert column type to be datetime
    df = df.set_index(['timestamp'])
    df.assign(dx=df.x.diff(), dy=df.y.diff(), dz=df.z.diff())
    return df

我的问题是,我看到ImageMagick创建的GIF不是数字顺序,而是订单1,10,100,11,12 ...,2,20,21 ...等等

我对ImageMagick并不熟悉并且阅读帮助页面并没有真正帮助:/

有没有人看到解决方案?

由于

2 个答案:

答案 0 :(得分:1)

默认目录列表将在2,20之前显示1,10,100等。这是ImageMagick在使用通配符列表时将用于读取它们的顺序。使用anim_001.gif,anim_002.gif等前导零重命名文件可以解决您的问题。查看Scilab手册,了解如何使用前导零保存文件。

另一种可能的方法,假设你的输入文件按照创建时间排序,是按时间/日期列出目录,将输出重定向到文本文件,然后让你的"转换"命令从该列表中读取输入图像。使用" @"并且文件名将告诉IM您正在从文本文件中读取输入图像列表。你可以试试这样的......

dir /o:d /b anim_*.gif > tmp.txt
convert -delay 10 -loop 0 @tmp.txt animation.gif

答案 1 :(得分:0)

我已经尝试了第一个选项但没有用,但第二个选项确实如此,非常感谢。

我不太确定能理解发生了什么。 我真的不明白第一行,为什么IM现在能够以良好的顺序读取帧。

我的猜测是.txt文件按创建时间顺序存储帧,不知何故,当从.txt文件中读取IM时,它会读取创建时间而不是名称来查找正确的顺序。是吗?

非常感谢:)