【问题标题】:Subtract one image from another (cut-out/exclude) (ImageMagick)从另一个图像中减去一个图像(剪切/排除)(ImageMagick)
【发布时间】:2014-03-08 18:43:15
【问题描述】:

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

减 结果

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

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

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

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

【问题讨论】:

    标签: imagemagick


    【解决方案1】:

    我从 IM 论坛获得了一些帮助。下面是我要求的。它将 Alpha 通道从圆形复制到方形图像上。这为我提供了与我想要的相反的 alpha,因此我否定了该通道以获得所需的结果。

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

    【讨论】:

      【解决方案2】:

      这如您所描述的那样工作,您可以在命令链的末尾执行此操作:

      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通道和平方相加。

      【讨论】:

      • 如果两个图像的大小不同,这将不起作用——它最终具有剪切图像的大小。虽然这个命令看起来很有希望。
      • 在这种情况下,我会首先将磁盘/形状图像放在具有其他图像大小的画布上,然后如上所示继续。
      【解决方案3】:

      我知道你说过你想要 convert 命令行,但这可能会帮助你弄清楚如何到达那里......

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

      我将您最左边的图像命名为“a”,将下一个图像命名为“b”。我相信有一个更简单的方法 - 我们只需要一个聪明的人来告诉我们!

      【讨论】:

      • 在第二张图片中,我要考虑的是alpha通道而不是颜色(我不清楚如何在这里显示透明度)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多