ImageMagick 乱序转换

ImageMagick converts out of order

我有 100 张名为 img0.jpg 到 img99.jpg 的图像要转换为 pdf 文件。问题是

convert img*.jpg out.pdf

按1、11、2、22等顺序添加页面。 imagemagick 中的顺序是如何定义的?

要么像这样用零填充数字对页面进行编号,这样 ImageMagick 就会按顺序排列它们:

img000.jpg
img001.jpg
img002.jpg
...
img098.jpg

那么您的原始命令应该可以工作。


或者,bash 按顺序枚举文件并将名称输入 ImageMagick,如下所示:

magick img{0..99}.jpg result.pdf

或者:

for file in img{0..99}.jpg; do echo $file; done | magick @- result.pdf

或者按照上面第一个例子重命名你的文件,但是使用 Perl rename:

rename --dry-run 's/\D//g; $_=sprintf("f-%05d.jpg",$_)' f*jpg

示例输出

'f0.jpg' would be renamed to 'f-00000.jpg'
'f1.jpg' would be renamed to 'f-00001.jpg'
'f10.jpg' would be renamed to 'f-00010.jpg'
'f11.jpg' would be renamed to 'f-00011.jpg'
'f12.jpg' would be renamed to 'f-00012.jpg'

您可能有 ls -v 可用,在这种情况下您可以尝试:

magick $(ls -v img*jpg) result.pdf