imagemagick 填充矩形外的区域

imagemagick Fill region outside of rectangle

我有一张图片,我想用该图片中位于矩形 之外的部分颜色(例如蓝色)进行填充。此矩形相对于原图左上角的左上角位置和width/height已知

这里原图的边框是红色的,矩形的边框是黑色的。蓝色区域应该被填充。

我该怎么做?我尝试创建一个 tmp 图像并使用 a mask,但它似乎也填充了矩形内的透明区域,这不是我想要的。

此外,可能有一种方法可以在不创建中间图像的情况下做到这一点?不过,我对这两种选择都感兴趣,因为我不确定需求会如何随时间变化——也许将来我必须应用其他形状(不是矩形),所以有一种方法可以应用在这种情况下,任意掩码会更好。

示例:

  • 找到原始图像中不存在的颜色。提示:使用 -unique-colors
  • Fill/draw 具有该颜色的黑色图像
  • 把所有不是那个颜色的东西都变成蓝色。提示:使用 -fill blue +opaque THATCOLOUR
  • 蓝色像素是你的面具

不确定我是否理解正确,但这是第一部分的内容:

magick 7uZfM.png -alpha deactivate -fill yellow -draw "rectangle 117,-24 1117,1676" result1.png

然后是第二部分:

magick 7uZfM.png -alpha deactivate -fill yellow -draw "rectangle 117,-24 1117,1676" -fill blue +opaque yellow -transparent yellow result2.png

好的,现在显示的是原图:

magick 7uZfM.png \( +clone -alpha deactivate -fill yellow -draw "rectangle 117,-24 1117,1676" -fill blue +opaque yellow -transparent yellow \) -flatten -background magenta result3.png