使用ImageMagick批量调整图像到新文件夹中

我有一个超过4MB的图像文件夹 – 让我们叫这个文件夹dsc_big/ 。 我想使用convert -define jpeg:extent=2MB将它们转换为2MB ,并将dsc_big/*复制到已经存在的文件夹dsc_small/中。

我试过convert dsc_big/* -define jpeg:extent=2MB dsc_small/但生成名为-0-1图像。

我该怎么办?

convert的目的是处理一个单一的input文件,据我所知,虽然我不得不承认,我不明白你得到的输出。 mogrify更适合以下列风格的批处理:

 mogrify -path ../dsc_small -define jpeg:extent=2MB dsc_big/* 

但老实说,我认为这是危险的一般用法(它会覆盖原来的图像,如果你忘记 – -path ),所以我总是使用convert加上一个for循环这个:

 for file in dsc_big/*; do convert $file -define jpeg:extent=2MB dsc_small/`basename $file`; done 

如果您正在处理当前目录中的文件,则basename调用不是必需的。

这是经过长时间的尝试,帮助我的命令。 我想从一个大的图像宽度和高度可变的大列表制作相同大小的缩略图。 这是为了创build一个画廊页面。

 convert -define jpeg:size=250x200 *.jpg -thumbnail 250x200^ -gravity center -extent 250x200 crop/thumbnail-%d.jpeg 

我得到了大小相同的缩略图。 :)感谢ImageMagick。

虽然这是一个古老的问题,但我join这个回应是为了别人的利益而绊倒这一点。

我有同样的确切的问题,并由于使用mogrify感到灰心,我写了一个名为easymagick的基于Python的小工具,在内部使用convert命令时使这个过程更加简单。

请注意,这仍然是一个正在进行的工作。 我会很感激任何反馈,我可以得到。

这是一个使用控制台上的循环的解决scheme

 convert *.jpeg -define jpeg:extent=2MB -set filename:f '../dsc_small/%t_small.%e' +adjoin '%[filename:f]' 

PS:如果主持人再次删除“重复回答”的回复,我再也不会发布堆栈溢出。 阅读解决scheme,这是一样的任何其他解决scheme,这个不使用控制台上的循环,并使用ImageMagick发布问题的人所要求的。 如果必须删除一个答案,继续删除使用其他包的答案,因为他们实际上没有回答问题

这对我有用

 convert -rotate 90 *.png rotate/image.jpg 

在“旋转”文件夹中生成image-0.jpg,image-1.jpg,image-2.jpg ….. 不知道保存原始文件名的方法。

我发现cd -ing到所需的文件夹,然后使用bash全局variables$PWD使我的convert不会抛出任何错误。 我正在使用ImageMagick最近实现的caption: http caption: //www.imagemagick.org/Usage/text/#caption函数来标记我的图像与基本文件名,并把它们放在另一个目录中的第一个。

 cd ~/person/photos mkdir labeled for f in $PWD/*.JPG; do width=$(identify -format %w $f) filename=$(basename $f .JPG) convert -background '#0008' -colorspace transparent -fill white -gravity center -size ${width}x100 caption:"${filename}" ${f} +swap -gravity south -composite "$PWD/labeled/${filename}.jpg"; done