2016-07-21 35 views
1

Ich versuche, einen Farbverlauf Effekt von zwei Bildern (oder mehr) zu machen. Aber das Problem ist, dass meine Bilder Transparenz haben.Php Imagick - Gradient Blend Bilder mit Transparenz

Ich muss Bilder: Image to blend at left Image to blend at right

ich diese beiden Bilder mischen wollen, so dass die rote auf der linken Seite sein wird, und das Blau auf der rechten Seite, mit einem Gradienten Mischeffekt.

Bisher habe ich eine Verlaufsmaske auf dem blauen anzuwenden, zum Beispiel dieser: Blue image mask

Blau Bildmaske

... und es oben auf dem roten setzen. Dies funktioniert perfekt für Fotos, aber wenn die Bilder Transparenz haben, ich habe diese:

Gradient Blending Test

Also hier können wir die Steigung Mischung des blauen Bildes sehen, aber wir können die roten durch die transparenten blauen sehen Rand. :(

Ich kann keine Lösung finden, um einen guten Farbverlaufseffekt zu erzielen, der auf transparenten Bildern funktioniert.Ich verwende imagemagick (mit PHP), aber ich finde die Lösung nicht einmal auf Gimp oder Photoshop. ..

Haben Sie eine gute Methode wissen, das zu tun

Dank

PS:?! Ressourcen: Red picture Red Bild

Blue picture Blau Bild

Mask black&white Maske des blauen Bild (schwarz & weiß)

Mask transarent&white Maske des blauen Bild (transparent & weiß)

+0

Können Sie die aktuellen Bilder ohne die Schachbrettunterlage bitte? –

+0

Natürlich! Ich habe die Frage bearbeitet! – Thaledric

Antwort

2

Kennst du ein gutes Ich? thod das zu tun?

Ich würde vorschlagen, die Alpha-Kanäle aus dem Basisbild zu isolieren, dann die beiden Bilder gegen die Maske zusammenfügen.

# Disable alpha channel, and composite without alpha 
convert red.png -alpha off red_base.png 
convert blue.png -alpha off blue_base.png 
convert blue_base.png black_mask.png -alpha Off \ 
     -compose CopyOpacity -composite \ 
     red_base.png -compose DstOver -composite base_out.png 

Base composite

Repeat mit dem Alphakanal extrahiert.

convert red.png -alpha extract red_mask.png 
convert blue.png -alpha extract blue_mask.png 
convert blue_mask.png black_mask.png -alpha Off \ 
     -compose CopyOpacity -composite \ 
     red_mask.png -compose DstOver -composite mask_out.png 

Alpha channel composite

Und schließlich die erzeugte Maske als neuer Alpha-Kanal anzuwenden.

convert base_out.png mask_out.png -alpha Off \ 
     -compose CopyOpacity -composite output.png 

Finial composite

+0

Schöne, Eric! –

+0

Ja! Es scheint gut zu funktionieren! : D Danke! – Thaledric