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 に答える