Прозрачность RMagick не работает при наложении одного изображения на другое


В следующем коде я пытаюсь наложить прозрачный квадрат на изображение некоторых гор. Я думал, что это сработает, но установка 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')

Вот мой выходной образ:

выход без прозрачного черного квадрата

Edit: i'm on Mac, Lion, ruby 1.9. 3p125, ImageMagick 6.7.5-7

Правка 2: это работает отлично на хероку! Но не на моей машине. У Heroku есть такая же версия ImageMagick. Странно :|

1 4

1 ответ:

По какой-то причине layer.alpha? == false. Так я и сделал sq.alpha(Magick::ActivateAlphaChannel) , и тогда это сработало!

Ссылка: http://www.imagemagick.org/RMagick/doc/image1.html#alpha