2014-07-03 6 views
6

Ich muss ein Bild über ein anderes Bild mit Pythons PIL-Bibliothek mischen.Python PIL: Blend transparentes Bild auf ein anderes

Wie Sie unten auf dem Bild sehen kann, sind meine beiden Quellbilder A und B. Wenn ich tun:

imageA.paste(imageB, (0, 0), imageB) 

ich C als Ergebnis, aber der Teil an der Spitze des Grau Hintergrund ist jetzt transparent. Image D ist, was ich bekomme, wenn ich in Photoshop B über A setze und was ich mit PIL erreichen muss.

Was mache ich falsch? Wie kann ich B über A in PIL schreiben, um D statt C zu bekommen?

Example Image

+0

was mit passiert: 'imageA.paste (imageB, (0, 0), mask = imageB)' – RickyA

+0

@RickyA, die genau das gleiche sein sollte: das dritte Argument "Paste" * ist * die Maske. Verwenden Sie stattdessen 'imageA' als Maske:' imageA.paste (imageB, (0, 0), imageA) ' – Germano

+0

@Germano: Das geht auch nicht, Bild B hat einen Schlagschatten, der abgeschnitten würde, wenn ich TU das. – Daniela

Antwort

0

Ich kann nicht jetzt einen Kommentar (rep Einschränkung).

Aber ich denke, was Sie wirklich brauchen, nach Ihrem Bedarf, dann ist dies stattdessen zu tun:

imageB.paste(imageA, (0, 0), imageA) 

Grundsätzlich, das heißt, B das Hintergrundbild macht die gewünschten Ergebnisse zu bekommen, denn das ist, was ich siehe in D.

EDIT: umsah mehr, fand ich diese: https://stackoverflow.com/a/15919897/4029893

ich glaube, Sie auf jeden Fall die alpha_composite Methode verwenden sollte, da Paste wor nicht k wie erwartet für Hintergrundbilder mit Transparenz.

0

Verwendung RGBA Transparenz Maske

imageA.paste(imageB, (0, 0), imageB.convert('RGBA')) 
Verwandte Themen