【问题标题】:RMagick ignores the opacity when creating a new image with RVG使用 RVG 创建新图像时,RMagick 会忽略不透明度
【发布时间】:2012-06-21 17:22:12
【问题描述】:

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

【问题讨论】:

  • 我对 rmagick 一无所知,但你能用 rgba 值代替粉色吗? rgba(250, 218, 221, 0.5)
  • @Bonzo,这是个好主意。我相信这就是我尝试使用 rvg.background_fill.opacity = 0 时所做的。如果我检查了颜色并且它的 alpha 值设置为 0,但仍然不起作用。

标签: ruby imagemagick rmagick


【解决方案1】:

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

rvg.draw.alpha(Magick::ActivateAlphaChannel)

那么你就不需要设置background_fill了,得到的图片会是漂亮、平滑的透明图片。

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2010-11-14
    • 2015-10-08
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多