如何在 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
我正在使用以下命令制作动画 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