我正在尝试生成具有透明背景的图像,但甚至无法创建仅是透明 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
最佳答案
在 rvg.image.write 之前,添加这一行:
rvg.draw.alpha(Magick::ActivateAlphaChannel)
然后你不需要设置 background_fill 并且生成的图像将是漂亮、平滑的透明图像。
关于ruby - RMagick 在使用 RVG 创建新图像时忽略不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143427/