Ruby RMagick:在已经有透明元素的png上设置不透明度

Ruby RMagick:在已经有透明元素的png上设置不透明度,ruby,rmagick,Ruby,Rmagick,我需要用rmagick创作图像。如果我在另一个图像上放置一个具有透明区域的png,并将该png的不透明度设置为50%,则透明部分将变为白色(不透明度为50%)。但我希望这些地区保持透明 这是我的密码: canvas = Magick::Image.new(1024,768) canvas.opacity = Magick::MaxRGB image = Magick::ImageList.new('/tmp/trans.png').first image.background_color = "

我需要用rmagick创作图像。如果我在另一个图像上放置一个具有透明区域的png,并将该png的不透明度设置为50%,则透明部分将变为白色(不透明度为50%)。但我希望这些地区保持透明

这是我的密码:

canvas = Magick::Image.new(1024,768)
canvas.opacity = Magick::MaxRGB
image = Magick::ImageList.new('/tmp/trans.png').first
image.background_color = "none"
image.opacity = Magick::MaxRGB/2
canvas.composite!(image, 50, 50, Magick::OverCompositeOp)
canvas.write('/tmp/composite.png')

有什么建议吗?

在谷歌搜索了8个小时后,我看到了这篇文章,它让我找到了答案。

-通道a强制选择alpha通道
-“求值倍数0.5”修改图像的透明度
+通道更改选择以包括输出中的所有通道

然后合并两个透明png,最后得到第三个透明png
(请注意,我正在为此操作使用GraphicsMagick,而不是ImageMagick)

convert FileIn.png -channel a -evaluate Multiply 0.5 +channel FileOut.png
gm convert FileIn1.png FileIn2.png -background transparent -mosaic FileOut.png