Imagemagick 7.0.7.22 及以上版本
-crop 3:2 从January 6th, 2018 开始工作。
JPG
magick convert in.jpg -gravity center -crop 3:2 out.jpg
警告/提醒:如果你不使用-gravity center,你会得到两个输出文件:
PNG
正如 fmw42 指出的那样,PNG 文件存储虚拟画布大小。推荐+repage。
magick convert in.png -gravity center -crop 3:2 +repage out+repage.png
GIMP、IrfanView、Chrome 和 Windows Explorer 没有任何区别,但 Imagemagick 知道:
magick identify out*png
out_stndrd.png PNG 252x168 314x168+31+0 8-bit sRGB 78557B 0.000u 0:00.000
out+repage.png PNG 252x168 252x168+0+0 8-bit sRGB 78529B 0.000u 0:00.000
JPG
convert in.jpg -gravity center -crop 3:2 out.jpg
PNG
convert in. -gravity center -crop 3:2 +repage out.png
Imagemagick 6.9.9-33 / 7.0.7.21 及以下
注意:对于 v7,您需要在任何 convert 之前添加 magick。
1。具体目标分辨率
如果您最终的目标是获得一定的分辨率(例如 1920x1080),那么使用 -geometry、抑扬符/帽子/屋顶/房屋符号 (^) 和 -crop 很容易:
convert in.jpg -geometry 1920x1080^ -gravity center -crop 1920x1080+0+0 out.jpg
循环多个 jpg 文件:
for i in *jpg
do convert "$i" -geometry 1920x1080^ -gravity center -crop 1920x1080+0+0 out-"$i"
done
2。仅宽高比裁剪
如果要避免缩放,则必须在 Imagemagick 之外计算裁剪边的新长度。这涉及更多:
aw=16 #desired aspect ratio width...
ah=9 #and height
in="in.jpg"
out="out.jpg"
wid=`convert "$in" -format "%[w]" info:`
hei=`convert "$in" -format "%[h]" info:`
tarar=`echo $aw/$ah | bc -l`
imgar=`convert "$in" -format "%[fx:w/h]" info:`
if (( $(bc <<< "$tarar > $imgar") ))
then
nhei=`echo $wid/$tarar | bc`
convert "$in" -gravity center -crop ${wid}x${nhei}+0+0 "$out"
elif (( $(bc <<< "$tarar < $imgar") ))
then
nwid=`echo $hei*$tarar | bc`
convert "$in" -gravity center -crop ${nwid}x${hei}+0+0 "$out"
else
cp "$in" "$out"
fi
我在示例中使用 16:9,希望它对大多数读者来说比 3:2 更有用。更改解决方案 1 中出现的 1920x1080 或解决方案 2 中的 aw/ah 变量以获得所需的纵横比。
图片来源:Anders Krusberg / Peabody Awards