Nel seguente codice sto cercando di sovrapporre aquadrato trasparente sopra l'immagine di alcune montagne. Ho pensato che avrebbe funzionato, ma impostando background_color = "none" non rende l'immagine trasparente!
Il risultato è un quadrato nero sopra l'angolo in alto a sinistra: il risultato desiderato è che il quadrato nero sia trasparente.
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")
Ecco la mia immagine di output:
Modifica: I'm on Mac, Lion, ruby 1.9.3p125, ImageMagick 6.7.5-7
Modifica 2: funziona perfettamente con Heroku! Ma non sulla mia macchina. Heroku ha la stessa versione di ImageMagick. Strano: |
risposte:
3 per risposta № 1Per qualche ragione layer.alpha? == false
. Così ho fatto sq.alpha(Magick::ActivateAlphaChannel)
e poi ha funzionato!
Riferimento: http://www.imagemagick.org/RMagick/doc/image1.html#alpha