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:
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 № 1Aus 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