2011-07-24 13 views
0

rmagickで画像を合成する必要があります。透明な領域を持つpngを別のイメージに置き、その透明度が50%の透明部分(50%の不透明度)を持つ部分をそのpngの不透明度を50%に設定します。しかし、私はこれらの地域を透明に保ちたい。RMagick:透明な要素を既に持っているPNGの不透明度を設定する

は、ここに私のコードです:

canvas = Magick::Image.new(1024,768) 
canvas.opacity = Magick::MaxRGB 
image = Magick::ImageList.new('/tmp/trans.png').first 
image.background_color = "none" 
image.opacity = Magick::MaxRGB/2 
canvas.composite!(image, 50, 50, Magick::OverCompositeOp) 
canvas.write('/tmp/composite.png') 

任意の提案ですか?

答えて

2

グーグルの8時間後、私はこの記事を読んで答えを思いついた。

が-evaluate乗算0.5は画像の透明度を変更アルファチャンネルの選択力が
+チャネルが出力にチャネルの全てを含むように選択を変更-channel http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=19169

convert FileIn.png -channel a -evaluate Multiply 0.5 +channel FileOut.png 

2つの透明なPNGをマージして、3番目の透明なPNGにします
(ImageMagickの代わりにGraphicsMagickを使っています)

gm convert FileIn1.png FileIn2.png -background transparent -mosaic FileOut.png 
関連する問題