我有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}}的图片,依此类推。
我该怎么办?
答案 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