如何将PNG图片裁剪为最小尺寸的正方形画布?
解决自动将裁剪后的图片转为正方形画布的问题
刚好我之前也碰到过一模一样的需求,用ImageMagick一行命令就能完美解决,完全不用手动猜画布尺寸,自动以裁剪后的最长边作为正方形边长,具体方案如下:
最终可用命令
convert input.png -trim +repage -gravity center -extent "%[fx:max(w,h)]x%[fx:max(w,h)]" output.png
逐参数拆解解释
-trim +repage:这部分你已经熟悉啦,先自动裁掉图片四周的透明区域,得到内容的最小边界;+repage是用来更新图片的页面信息,避免后续处理出现偏移bug。-gravity center:设置内容在新画布中的对齐方式为居中,确保最终正方形里的内容是居中显示的,不会歪到一边。-extent "%[fx:max(w,h)]x%[fx:max(w,h)]":这是核心的自动计算部分——w和h代表裁剪后的图片宽度和高度,max(w,h)会自动取两者中的最大值作为正方形的边长,ImageMagick会自动把画布扩展成这个正方形尺寸,空白区域会保留原有的透明背景。
效果示例
比如裁剪后的图片是宽300px、高500px,命令会自动生成500x500px的正方形画布,把300px宽的内容居中放在里面,左右两侧保留透明背景;如果裁剪后是宽600px、高400px,就会生成600x600px的正方形,上下两侧留透明背景,完全不用你手动指定数值。
内容的提问来源于stack exchange,提问作者Terence Eden
相关产品推荐
相关产品推荐

