从另一个图像中减去一个图像(剪切/排除)(ImageMagick)

时间:2014-02-11 05:45:15

标签: imagemagick

我正在尝试做我认为简单的操作,只是无法找出convert的命令行选项。我有两张图片,想从另一张图片中减去。

Source Image减去 Mask会导致 Result

我知道它必须涉及-composite一个-compose选项的命令,但我无法弄清楚哪个。要么它与我想要的相反,要么创建一个较小的区域(当切出的部分是较小的图像时),或者只做其他事情。

注意:在第二个图像中,应该减去alpha通道,忽略颜色。完全不透明的像素将从结果中完全移除,透明的像素保持不变,部分的像素被部分移除。 第二张图片的大小可能与第一张图片的大小不同。最终必须应用几何偏移,此处的示例仅用于简化目的。

实现我想要的命令行是什么?

注意:我想要convert而不是compose的命令行,因为它实际上是较长命令行的最后一步。

3 个答案:

答案 0 :(得分:1)

我从IM论坛得到了一些帮助。以下是我要求的。它将圆形的alpha通道复制到方形图像上。这给了我与我想要的相反的alpha,所以我否定了那个通道来获得理想的结果。

convert square.png circle_small.png -gravity center -compose CopyOpacity \
    -composite -channel A -negate a.png

答案 1 :(得分:0)

我知道你说你想要转换命令行,但这可能有助于你找到如何到达那里......

convert -negate b.png invb.png
composite -compose Lighten  a.png invb.png c.png

我将你最左边的图像命名为#34; a"和下一个" b"。我相信有一种更简单的方法 - 我们只需要一个聪明的人来告诉我们!

答案 2 :(得分:0)

这可以按照您的描述工作,您可以在命令链的末尾执行此操作:

convert -channel Alpha -compose subtract -composite circle.png square.png -write mpr:orig +delete \
        -channel RGB -compose add -composite mpr:orig square.png output.png

我使用mpr来保存第一个操作的结果。显然,诀窍是首先减去相应的alpha通道,然后添加减法和正方形的RGB通道。