我在 Image Magick 中寻找一个命令来强制将图像转换为特定的宽高比。结果应该是原始图像,其中图层扩展到正确的宽高比,原始图像位于中间,任何新的周围空间都是白色。我该怎么做?
例如,宽源 Image1 生成以下结果:
高大的源 Image2 生成了这样的结果:
在每种情况下,最终处理后的图像的宽高比均为 4:3。否则,它们的尺寸可能为任意。我手动执行了以下过程:如果宽度大于 4:3,则将高度设置为宽度/4×3;否则,如果高度大于 4:3,则将宽度设置为高度/3×4。
或者,如果更容易的话,所有输出图像都可以是固定大小:例如 640 x 480。
(所需命令稍后将批量用于处理一系列具有不同初始尺寸的文件。)
答案1
a.png
a.jpg
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) | \
while read img; do
fbname=$(basename "$img")
magick "$img" -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result-"$fbname"
done
result-a.png
result-a.jpg
识别a.png
a.png PNG 1000x400 1000x400+0+0 8-bit sRGB 264165B 0.000u 0:00.000
识别a.jpg
a.jpg JPEG 771x1036 771x1036+0+0 8-bit sRGB 186084B 0.000u 0:00.000
识别结果-a.jpg
result-a.jpg JPEG 1381x1036 1381x1036+0+0 8-bit Gray 256c 200001B 0.000u 0:00.000
识别结果-a.png
result-a.png PNG 1000x750 1000x750+0+0 8-bit sRGB 277529B 0.000u 0:00.000