【问题标题】:How to sort input PNG files in ImageMagick如何在 ImageMagick 中对输入的 PNG 文件进行排序
【发布时间】:2015-06-18 10:49:58
【问题描述】:

我正在使用以下命令制作动画 GIF 文件:

convert -delay 10 -loop 0 *.png animated.gif

但是,问题是按照 *.png 的顺序发生的。

我的 PNG 文件类似于 1.png、2.png、... 100.png。

在生成的动画 GIF 中,帧的顺序如下:1.png、10.png、100.png、2.png ...

我希望在生成的 GIF 中快照按 1、2、3 ... 100 的顺序排列。

【问题讨论】:

  • 只需用前导零重命名您的图像。

标签: bash imagemagick


【解决方案1】:

请尝试sort:

$ ls | sort -V
1.png
2.png
10.png
100.png

所以最终:

convert -delay 10 -loop 0 $(ls *.png | sort -V) animated.gif

【讨论】:

  • 遗憾的是,这在 Mac OSX 10.12.6 上不起作用(排序:无效选项 -- V)
  • @BenClayton 看看这个answer
【解决方案2】:

这个小脚本会用前导零为您重命名您的文件 - 首先在您的文件的副本上尝试:

#!/bin/bash
for i in {1..1000}; do
   [ -f "$i.jpg" ] && echo mv "$i.jpg" $(printf "%04d.jpg" $i)
done

它会查找从 1.jpg 到 1000.jpg 的 JPEG 文件,如果存在,它会用最多 3 个前导零重命名,直到数字部分为 4 位宽。

如果你把它保存为renamer,你就会运行

chmod +x renamer    # just do this once to make it executable
./renamer           # do this any time you want the whole directory of JPEGs renamed

如果您看到并喜欢它的作用,请删除单词echo,然后再次运行它。

样本输出

mv 1.jpg 0001.jpg
mv 99.jpg 0099.jpg
mv 102.jpg 0102.jpg

【讨论】:

    【解决方案3】:

    重命名您的图片,使用前导零,例如:

    001.png, 002.png, 003.png,......099.png,100.png.
    

    它会很好地为你工作

    【讨论】:

      【解决方案4】:

      glob 运算符 (*) 通过比较文本对结果列表进行排序。因此,将文件 1.png, 2.png ... 重命名为 001.png, 002.png 应该可以。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 2014-11-05
        • 2014-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多