合并一个图像而不是另一个图像时,RMagick透明度不起作用

在下面的代码中,我试图在一些山脉的图像上覆盖一个透明的方块。 我认为它会起作用,但通过设置background_color =’none’它不会使图像透明!

结果是左上角有一个黑色方块 – 所需的结果是黑色方块应该是透明的。

require 'open-uri' require 'RMagick' image_url = 'http://farm9.staticflickr.com/8446/7937080514_62d7749860.jpg' bg = Magick::ImageList.new open(image_url, 'rb') do |f| bg.from_blob(f.read) end layer = Magick::Image.new(200, 200) { self.background_color = 'none' } bg.each do |frame| frame.composite!(layer, 0, 0, Magick::OverCompositeOp) frame.strip! end bg.write('out.jpg') 

这是我的输出图像:

输出没有透明的黑色方块

编辑:我在Mac,Lion,ruby 1.9.3p125,ImageMagick 6.7.5-7

编辑2:这在Heroku上工作正常! 但不是在我的机器上。 Heroku具有相同版本的ImageMagick。 奇怪:|

出于某种原因, layer.alpha? == false layer.alpha? == false 。 所以我做了sq.alpha(Magick::ActivateAlphaChannel)然后它工作了!

参考: http : //www.imagemagick.org/RMagick/doc/image1.html#alpha