如何在 ImageMagick 中对输入的 PNG 文件进行排序

How to sort input PNG files in ImageMagick

我正在使用以下命令制作动画 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 的顺序排列。

请尝试sort:

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

所以最终:

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

前导零重命名你的图片,例如:

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

它会很好地为你工作

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

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

#!/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