4

我正在尝试生成具有透明背景的图像,但甚至没有创建只是透明 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")

生成:

在此处输入图像描述

我也试过:

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 
4

1 回答 1

2

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

rvg.draw.alpha(Magick::ActivateAlphaChannel)

然后你不需要设置 background_fill 并且生成的图像将是漂亮、平滑的透明图像。

于 2015-01-11T23:29:40.207 回答