【问题标题】:ImageMagick convert rotate cropImageMagick 转换旋转裁剪
【发布时间】:2026-01-27 20:35:02
【问题描述】:
ImageMagick 的 convert 工具中的旋转选项会旋转图像,但会添加背景颜色以填补空白。
我正在寻找一种方法来旋转然后裁剪包含图像内容的最大矩形。 convert 可以吗?
由 Mark Setchell 编辑...
所以,如果您的原始矩形是这样创建的棋盘格:
convert -size 512x512 pattern:checkerboard a.png
然后像这样将它旋转 20 度
convert -background fuchsia -rotate 20 a.png b.png
您想要适合棋盘且不包含粉红色的最大矩形吗?
【问题讨论】:
标签:
imagemagick
imagemagick-convert
【解决方案1】:
您可以通过使用+repage 并将-rotate 替换为-distort ScaleRotateTranslate 来获得预期结果的近似值:
convert -background fuchsia -distort ScaleRotateTranslate 20 +repage a.png b.png
【解决方案2】:
按照指示创建图像后:
convert -size 512x512 pattern:checkerboard a.png
这似乎起作用了:
angle=20
ratio=`convert a.png -format \
"%[fx:aa=$angle*pi/180; min(w,h)/(w*abs(cos(aa))+h*abs(sin(aa)))]" \
info:`
crop="%[fx:floor(w*$ratio)]x%[fx:floor(h*$ratio)]"
crop="$crop+%[fx:ceil((w-w*$ratio)/2)]+%[fx:ceil((h-h*$ratio)/2)]"
convert a.png -set option:distort:viewport "$crop" \
+distort SRT $angle +repage rotate_internal.png
来自here。