使用 ImageMagick 版本 6,下面的命令将创建两个输出图像。 (ImageMagick 版本 7 的示例命令在回复的下方。)
将使用从 w*0.68xh*0.47 开始到 w*0.94xh*0.82 结束的边界框从输入图像中裁剪第一张输出图像。
第二个输出将是带有白色部分的输入,对应于裁剪出的子图像以制作第一张图像。
convert input.png \
-set option:distort:viewport "%[fx:(w*0.94)-(w*0.68)]x%[fx:(h*0.82)-(h*0.47)]" \
\( +clone -distort affine "0,0 -%[fx:w*0.68],-%[fx:h*0.47]" \
-write result1.png -fill white -colorize 100 \) \
-set page "%[fx:u.w]x%[fx:u.h]+%[fx:t*(u.w*0.68)]+%[fx:t*(u.h*0.47)]" \
-flatten result2.png
首先读取输入图像并根据您提供的边界框尺寸计算视口,即要裁剪的子图像的尺寸。
然后在括号内创建一个克隆并执行“-distort affine”,这实际上是裁剪图像并将其正确定位在该视口中。它将结果写入第一个输出图像“result1.png”。然后,仍然在括号内,它用白色填充裁剪的部分。
之后,它会设置分页几何,以便最终可以将白色部分合成回输入图像上的原始位置。
它通过将白色块展平到输入图像上完成,并写入第二个输出图像“result2.png”。
同样的事情可以使用 ImageMagick 版本 7 完成,但命令稍微简单一些...
magick input.png \
\( +clone \
-crop "%[fx:(w*0.94)-(w*0.68)]x%[fx:(h*0.82)-(h*0.47)]+%[fx:w*0.68]+%[fx:h*0.47]" \
-write result1.png -fill white -colorize 100 \) \
-flatten result2.png
它直接在“-crop”操作中进行计算,并且分页几何图形保存在裁剪后的块中,因此可以在不重置几何图形的情况下将其展平回其原始位置。
这些是 *nix 语法。为了使它在 Windows 中工作,将续行的反斜杠“\”更改为插入符号“^”,并消除那些转义括号“\(...\)”的反斜杠。