我正在尝试创建一个具有不同不透明度值的水印(从0不透明值到1完全透明)。
我有以下用于ruby中RMagick的方法:
# 0 = opaque (Magick::OpaqueOpacity) 1= transparent (Magick::TransparentOpacity)
def watermark(opacity = 0.99, size = 'm')
manipulate! do |img|
logo = Magick::Image.read("#{Rails.root}/app/assets/images/watermark#{size}.png").first
logo.alpha(Magick::ActivateAlphaChannel)
logo.opacity = (1 - opacity.to_f) * Magick::QuantumRange
img.alpha(Magick::ActivateAlphaChannel)
img = img.composite(logo, Magick::NorthWestGravity, 0, 0, Magick::OverCompositeOp)
end
end
我的问题是似乎可以工作,但合成模式、Alpha合成或设置不透明度或Alpha失败了,因为图像中出现了黑色透明度。例如,如果我的水印是一个完全透明的图像,并带有一些文本,我将其放在汽车图像上方,那么我会得到一个更加暗淡或夜间的带有水印的图像,所以水印的背景没有正确地混合。
有什么建议可以正确地设置水印图像的不透明度?也许有一些溶解水印的方法?
编辑:添加图像示例: http://uppix.com/f-watermarkg53925b100016ab8e.png(水印) http://oi62.tinypic.com/2us8rxl.jpg(基础图像) http://oi60.tinypic.com/2pt6mg3.jpg(组合)