如何使用ImageMagick将图片尺寸调整为4:3且不裁剪画面
你现在的命令直接调整画布尺寸,没有提前对原图做等比缩放适配,才会出现内容被裁剪的问题。正确逻辑是先把原图等比缩放到刚好可以完整放进4:3的画布内,再补白边调整到目标比例即可。
解决方案
方案1(适配ImageMagick 7及以上版本)
直接增加resize参数做预适配即可,命令如下:
convert /original-file.jpg -resize "4:3>" -background white -gravity center -extent 4:3 jpg:new-file.jpg
其中-resize "4:3>"会将原图等比缩放至刚好适配4:3的比例边界,不会有内容超出画布,>代表仅缩小原图不放大,如果需要小图放大适配可去掉该符号。
方案2(兼容ImageMagick 6版本)
如果你的运行环境是ImageMagick 6,不支持直接用比例作为extent参数,可以先计算目标尺寸再执行转换:
# 读取原图宽高 read img_w img_h < <(identify -format "%w %h" /original-file.jpg) # 计算4:3比例的目标画布尺寸 if (( img_w * 3 > img_h * 4 )); then target_w=$img_w target_h=$(( img_w * 3 / 4 )) else target_h=$img_h target_w=$(( img_h * 4 / 3 )) fi # 执行转换 convert /original-file.jpg -background white -gravity center -extent ${target_w}x${target_h} jpg:new-file.jpg
内容的提问来源于stack exchange,提问作者DevMan
相关产品推荐
相关产品推荐

