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

时间:2012-01-03 03:48:03

标签: image bash imagemagick filesize

我有4MB上的图片文件夹 - 让我们调用此文件夹dsc_big/。我想使用convert -define jpeg:extent=2MB将其转换为2MB下的dsc_big/*并将dsc_small/复制到已存在的文件夹convert dsc_big/* -define jpeg:extent=2MB dsc_small/

我尝试-0,但会生成名为-1,{{1}}的图片,依此类推。

我该怎么办?

6 个答案:

答案 0 :(得分:50)

就我所知,

convert旨在处理单个输入文件,尽管我不得不承认我不理解你得到的输出。 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调用。

答案 1 :(得分:4)

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

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

我得到了重新调整大小的缩略图,它们都具有相同的宽度和高度。 :)感谢ImageMagick。

答案 2 :(得分:3)

这是一个解决方案没有在控制台上使用for循环

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

答案 3 :(得分:1)

虽然这是一个老问题,但我正在添加此回复,以免造成其他任何偶然发现此问题的人。

我有同样的问题,并且因使用mogrify而气馁,我写了一个名为easymagick的基于Python的小工具,以便在内部使用convert时更轻松地完成此过程命令。

请注意,这仍在进行中。我会感激我能得到的任何反馈。

答案 4 :(得分:0)

这对我有用

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

在'旋转'中产生image-0.jpg,image-1.jpg,image-2.jpg .....夹。但是,不知道如何保留原始文件名。

答案 5 :(得分:0)

我发现cd - 进入所需的文件夹,然后使用bash全局变量$PWD使我的convert不会抛出任何错误。我利用ImageMagick最近实现的caption: http://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