使用RVG创建新图像时,RMagick会忽略不透明度

时间:2012-06-21 17:22:13

标签: ruby imagemagick rmagick

我正在尝试生成具有透明背景的图像,但是甚至不创建只是透明png的图像。我试过这个:

require "rvg/rvg"

rvg = Magick::RVG.new(100, 100)
rvg.background_fill = "pink" # Shouldn't matter
rvg.background_fill_opacity = 0
rvg.draw.write("transparent.png")

生成:

enter image description here

我也尝试过:

rvg.background_fill.opacity = 0
rvg.styles(:fill_opacity => 0)
rvg.styles(:opacity => 0)

他们都得到了一个坚实的粉红色矩形。

如何使用RMagick的RVG生成透明png?

更新:图片似乎甚至不打算透明:

1.9.2p320 :007 > rvg.draw
 => transparent.png  100x100 DirectClass 8-bit 
1.9.2p320 :008 > rvg.draw.alpha
 => false 
1.9.2p320 :009 > rvg.draw.alpha?
 => false 

1 个答案:

答案 0 :(得分:2)

在rvg.image.write之前,添加以下行:

rvg.draw.alpha(Magick :: ActivateAlphaChannel)

然后你不需要设置background_fill,结果图像将是漂亮,平滑的透明图像。