如何在ImageMagick中执行桶形畸变且不自动裁剪以保留完整图像数据
解决ImageMagick桶形畸变自动裁剪问题
你当前的命令会默认将畸变后的图像裁剪回原正方形尺寸,要实现自动适配畸变后完整尺寸并填充黑色空白的效果,需要给-distort指定viewport参数,让ImageMagick生成足够容纳所有畸变像素的画布,同时让原图像居中显示。
修正后的命令
magick in.jpg -virtual-pixel Black -set option:distort:viewport '%[fx:ceil(w*1.6)]x%[fx:ceil(h*1.6)]+%[fx:floor((w*1.6-w)/2)]+%[fx:floor((h*1.6-h)/2)]' -distort Barrel "0 0 -0.3" +repage out.png
参数说明
-set option:distort:viewport:定义畸变后画布的尺寸和位置:%[fx:ceil(w*1.6)]x%[fx:ceil(h*1.6)]:将画布设为原尺寸的1.6倍(可根据畸变程度调整倍数,畸变效果越明显可适当增大到2.0),ceil确保尺寸为整数+%[fx:floor((w*1.6-w)/2)]+%[fx:floor((h*1.6-h)/2)]:计算左右、上下方向的偏移量,让原图像居中显示在新画布上
+repage:重置图像的画布偏移信息,避免后续操作出现位置偏移问题
内容的提问来源于stack exchange,提问作者Tony Gutierrez
相关产品推荐
相关产品推荐

