使用 CLI(imagemagick?)将两个单色图像合并为一个

Combine two single color images into one with CLI (imagemagick?)

我正在生成待办事项计划的“单一”彩色图像(B/W 和 red/white),以将图像写入三色电子墨水屏幕,我的 Raspberry Pi.先写黑色的,再用红色覆盖。这真的很棒,所以不需要任何帮助。

但我也想在网站上提供相同的图片。所以我需要让我的红色图像“覆盖”黑色图像,所以我也有电子墨水显示的黑色/red/white 图像,作为 png/bmp/jpg/whatever。现在我们只使用黑色的,但我也想要红色的我过期的东西。

我已经有 imagemagick 用于从 SVG 到 PNG/BMP 等的转换,我猜它应该能够做到这一点。但是,我找不到任何例子。定义正确的搜索参数也很困难,因为很多人希望将两张图像彼此相邻或下方组合在一起,而不是实际组合它们。

这里有人知道怎么做吗? (我没有卡在 ImageMagick 上,但这是我已经在使用的工具)

我的猜测是我需要使 red/white 中的白色透明,然后以某种方式将其叠加在顶部...但是如何?

将红色图像的不透明度更改为 50%

convert red.png -alpha set -background none -channel A -evaluate multiply 0.5 +channel red2.png

然后在黑色上叠加50%RED

convert black.png red2.png -gravity center -composite all.png 

多亏了我在其他地方找到的关于透明度的答案,以及上面来自布鲁斯 'composite' 的答案,我最终做了:

convert screen-output-red.png -fuzz 30% -transparent white -fill red -opaque black trans.png
composite trans.png screen-output.png combo.png

还没想好我是否可以一步完成,但现在已经足够了。

使用 ImageMagick 有多种方法可以做到这一点。一个很简单的方法就是让白色透明,然后在黑色上合成红色。

magick img_black.png img_red.png -colorspace rgb \
   -fuzz "10%" -transparent white -background white -flatten result.png

首先它读取两个图像并将工作色彩空间设置为“rgb”,因此结果将是彩色而不是灰度。

然后它将“-fuzz”值设置为“10%”,这是受“-transparent”操作影响的纯白色差异量。您可以根据需要调整此金额。

接下来,“-transparent white”操作移除所有由模糊值指定的白色和近白色。因为这会从两个图像中移除白色,所以我们添加白色背景颜色,这样结果就会被压平。

最后将红色图像拼合到白色背景上的黑色图像上,并将结果写入文件。

此命令在 *nix 系统上使用 ImageMagick v7。要将它与 IMv6 一起使用,请将“magick”更改为“convert”。要在 Windows 中使用此命令,请将续行反斜杠“\”更改为脱字符“^”。