4

次のコードでは、いくつかの山の画像の上に透明な正方形を重ねようとしています。うまくいくと思ったのですが、 background_color = 'none' にすることで画像が透明になりません!

その結果、左上隅に黒い四角が表示されます。目的の結果は、黒い四角が透明になることです。

require 'open-uri'
require 'RMagick'

image_url = 'http://farm9.staticflickr.com/8446/7937080514_62d7749860.jpg'

bg = Magick::ImageList.new
open(image_url, 'rb') do |f|
  bg.from_blob(f.read)
end

layer = Magick::Image.new(200, 200) {
  self.background_color = 'none'
}

bg.each do |frame|
  frame.composite!(layer, 0, 0, Magick::OverCompositeOp)
  frame.strip!
end

bg.write('out.jpg')

これが私の出力画像です:

透明な黒い四角がない出力

編集:私はMac、Lion、ruby 1.9.3p125、ImageMagick 6.7.5-7を使用しています

編集 2: これは Heroku で正常に動作します! しかし、私のマシンではありません。Heroku には同じバージョンの ImageMagick があります。奇妙な :|

4

1 に答える 1

3

なぜかlayer.alpha? == false。だから私はそうしましたsq.alpha(Magick::ActivateAlphaChannel)、そしてそれはうまくいきました!

参照: http://www.imagemagick.org/RMagick/doc/image1.html#alpha

于 2012-09-05T19:52:07.510 に答える