/ / RMagick-Transparenz funktioniert nicht, wenn Sie ein Bild über ein anderes setzen - Rubin, Bild, Imagemagick, Rmagick

RMagick Transparenz funktioniert nicht, wenn ein Bild über ein anderes Bild zusammengesetzt wird - Ruby, Image, ImageMagick, Rmagick

Im folgenden Code versuche ich, einetransparentes Quadrat über dem Bild einiger Berge. Ich dachte, es würde funktionieren, aber durch die Einstellung von background_color = "none" wird das Bild nicht transparent!

Das Ergebnis ist ein schwarzes Quadrat über der oberen linken Ecke. Das gewünschte Ergebnis sollte das schwarze Quadrat transparent sein.

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")

Hier ist mein Ausgabebild:

Ausgabe mit keinem transparenten schwarzen Quadrat

Edit: Ich bin auf Mac, Lion, Ruby 1.9.3p125, ImageMagick 6.7.5-7

Edit 2: Das funktioniert gut auf Heroku! Aber nicht auf meiner Maschine. Heroku hat dieselbe Version von ImageMagick. Seltsam: |

Antworten:

3 für die Antwort № 1

Aus irgendeinem Grund layer.alpha? == false. So tat ich sq.alpha(Magick::ActivateAlphaChannel) und dann hat es funktioniert!

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