2014-07-03 3 views
6

Ho bisogno di fondere un'immagine su un'altra immagine usando la libreria PIL Pythons.PIL Python: miscelare l'immagine trasparente su un'altra

Come si può vedere nell'immagine qui sotto, i miei due immagini sorgente sono A e B. Quando faccio:

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

ottengo C come risultato, ma la parte in alto del grigio lo sfondo è ora trasparente. L'immagine D è ciò che ottengo quando inserisco B su A in Photoshop ed è ciò che devo realizzare con PIL.

Cosa sto sbagliando? Come posso comporre B su A in PIL per ottenere D invece di C?

Example Image

+0

cosa succede con: 'imageA.paste (Imageb, (0, 0), maschera = Imageb)' – RickyA

+0

@RickyA Questo dovrebbe essere esattamente lo stesso: il terzo argomento per "incollare" * è * la maschera. Prova invece a utilizzare 'imageA' come maschera:' imageA.paste (imageB, (0, 0), imageA) ' – Germano

+0

@Germano: Anche questo non funziona, l'immagine B ha un'ombra esterna che verrebbe tagliata se io Fai quello. – Daniela

risposta

0

non posso commentare per ora (vincolo rep).

Ma penso che quello che si ha realmente bisogno, in base alle proprie necessità, è quello di fare questo, invece:

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

In sostanza, cioè, rendere B l'immagine di sfondo per ottenere i risultati desiderati, perché è quello che ho vedere in D.

EDIT: Guardando in giro di più, ho trovato questo: https://stackoverflow.com/a/15919897/4029893

penso che si dovrebbe assolutamente utilizzare il metodo alpha_composite, dal momento che pasta non wOR k come previsto per le immagini di sfondo con trasparenza.

0

uso RGBA trasparenza maschera

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