ImageMagick - 使颜色半透明

ImageMagick - Make a color semi-transparent

我正在尝试将 image1 叠加在 image2 上。我想使 image1 中的颜色半透明。到目前为止,我只能使用

将 image1 覆盖在 image2 上
composite -gravity north image2.png image1.png image3.png

如何在将 image1 中的颜色(在本例中为灰色)覆盖到 image2 之前使其半透明?

我正在使用:

Version: ImageMagick 7.0.8-23 Q16 x86_64 2019-01-09 

谢谢

让我们先做一个叠加层 (image2.png),从左侧的 80/255、中间的 128/255 和右侧的 200/255 开始,使用 3 个逐渐变浅的灰色阴影:

convert -size 200x438 xc:"gray(80,80,80)" xc:gray xc:"gray(200,200,200)" +append image2.png

假设我们的起始图像是这样的:

我们现在可以像这样将中灰精确地制作成半透明的中灰并叠加:

convert bean.jpg \( image2.png -fill "rgba(128,128,128,0.5)" -opaque gray \) -composite result.png

或者,如果我们还想影响灰色 (80),我们可以加入一些模糊:

convert bean.jpg \( image2.png -fill "rgba(128,128,128,0.5)" -fuzz 20% -opaque gray \) -composite result.png


请注意,在 ImageMagick 的版本 7 中,命令发生了变化:

Version 6       | Version 7
=================================
identify        | magick identify
convert         | magick
mogrify         | magick mogrify
composite       | magick composite
montage         | magick montage
compare         | magick compare
animate         | magick animate
stream          | magick stream

参数顺序也比较严格,赞成:

magick [settings] INPUT [settings] [operators] OUTPUT

超过:

convert [settings] [operators] INPUT [settings] [operators] OUTPUT

我的意思是你应该在应用运算符之前加载图像,而不是建立一个运算符列表然后加载图像并希望 ImageMagick 记住你说你想做什么,如果你加载过任何东西。