我需要在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')
有什么建议吗?
答案 0 :(得分:2)
经过8个小时的谷歌搜索后,我发现了这篇文章,让我得出了答案 http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=19169
convert FileIn.png -channel a -evaluate Multiply 0.5 +channel FileOut.png
-channel a强制选择alpha通道
-evaluate Multiply 0.5修改图像的透明度
+通道更改选择以包括输出中的所有通道
然后合并两个透明的png,最后得到第三个透明的png (请注意我使用GraphicsMagick进行此操作而不是ImageMagick)
gm convert FileIn1.png FileIn2.png -background transparent -mosaic FileOut.png