作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 imagemagick,我想以最小的方式裁剪图像,使其适合给定的纵横比。
示例:假设图像为 3038 x 2014 像素,我想将其裁剪为 3:2 的纵横比。生成的图像将是 3021 x 2014 像素,从原始图像的中心裁剪。
所以寻找一个类似于 convert in.jpg -gravity center -crop_to_aspect_ratio 3:2 out.jpg
的命令.
最佳答案
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
,您将获得两个输出文件:
+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
Imagemagick
6.9.9-34以上
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 及以下
magick
在任何之前
convert
对于 v7。
-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. 仅纵横比裁剪
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 更有用。更改
1920x1080
的两次出现在解决方案 1 或
aw
中/
ah
解决方案 2 中的变量以获得所需的纵横比。
关于ImageMagick:如何将图像最小化到一定的纵横比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262466/
我正在尝试开发右边框/Angular 具有特定 Angular (30°) 的表格。我见过一些类似的解决方案,但它们都无法在一定程度上发挥作用。如果我想从 30° 改变到 20°,我不想花太多力气。
我是一名优秀的程序员,十分优秀!