【问题标题】: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

    【讨论】: