ruby - RMagick 在使用 RVG 创建新图像时忽略不透明度

标签 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 

最佳答案

在 rvg.image.write 之前,添加这一行:

rvg.draw.alpha(Magick::ActivateAlphaChannel)

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

关于ruby - RMagick 在使用 RVG 创建新图像时忽略不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143427/

相关文章:

ruby-on-rails - 回形针 - 图片上传错误 : "not recognized by the ' identify' command."

ruby - 无法在 debian 7.6 上安装 rmagick(包冲突)

ruby - 通过 Rmagick 将图像附加到 PNG

ruby - cygwin 使用什么版本的 ruby​​?

ruby-on-rails - 如何通过 ruby​​ on Rails 模型向数据库赋予 null 值

ruby - 弹出窗口阻止 watir-webdriver 脚本进一步执行

c++ - Typedef、Ruby 和 SWIG

php - 如何使用 imagick for php (imagemagick) 设置像素的颜色?

powershell - imagemagick 中 STDIN/STDOUT 的正确语法

ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题