如何在ImageMagick参数中引用图片宽高?实现任意图片转正方形
如何用ImageMagick将任意尺寸图片转为带黑边的正方形?
ImageMagick支持通过fx表达式实现这个需求,你可以用%[fx:max(w,h)]动态获取图片宽高中的最大值,以此作为正方形的边长。以下是适配任意尺寸图片的PowerShell命令:
magick.exe convert -background black -gravity center ` -resize "%[fx:max(w,h)]x%[fx:max(w,h)]^" -extent "%[fx:max(w,h)]x%[fx:max(w,h)]" ` -set filename:original '%t' '.\*.jpg' './%[filename:original]-resized.jpg'
关键参数说明:
%[fx:max(w,h)]:通过ImageMagick的fx计算式,自动取当前图片宽度(w)和高度(h)的最大值,作为正方形的边长-resize "%[fx:max(w,h)]x%[fx:max(w,h)]^":^符号表示保持图片比例,只缩放至不超过目标尺寸(避免拉伸变形)-extent "%[fx:max(w,h)]x%[fx:max(w,h)]":将图片裁剪/扩展到计算出的正方形尺寸,结合-gravity center和-background black,会用黑色填充空白区域
你之前尝试的max(%w,%h)写法不被支持,是因为%w/%h这类变量不能直接用于resize或extent的尺寸参数中,必须通过fx表达式完成动态计算。
内容的提问来源于stack exchange,提问作者Marco Eckstein
相关产品推荐
相关产品推荐

