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
我有 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