/ / La trasparenza RMagick non funziona quando si compositing un'immagine su un'altra - ruby, image, imagemagick, rmagick

La trasparenza di RMagick non funziona quando si compositing un'immagine su un'altra - ruby, image, imagemagick, rmagick

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:

uscita con nessun quadrato nero trasparente

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

Per 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