2011-09-22 17 views
17

Per un po 'ho sbattuto la testa contro il muro, quindi forse qualcuno là fuori può aiutare.Il PNG trasparente nel PIL risulta non essere trasparente

Sto usando PIL per aprire un PNG con sfondo trasparente e alcuni scarabocchi neri casuali, e cercando di metterlo su un altro PNG (senza trasparenza), quindi salvarlo in un terzo file.

Alla fine esce tutto nero, il che è irritante, perché non gli ho detto di essere nero.

Ho provato questo con più correzioni proposte da altri post. L'immagine si apre in formato RGBA ed è ancora incasinata.

Inoltre, questo programma dovrebbe gestire tutti i tipi di formati di file, motivo per cui sto utilizzando PIL. Ironico che il primo formato che ho provato sia tutto vizioso.

Qualsiasi aiuto sarebbe apprezzato. Ecco il codice:

from PIL import Image 
img = Image.open(basefile) 
layer = Image.open(layerfile) # this file is the transparent one 
print layer.mode # RGBA 
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests 
img.save(outfile) 
+0

Eventuali duplicati di http://stackoverflow.com/questions/5324647/how-to-merge-a-transparent-png-image-with-another- image-using-pil –

risposta

30

Penso che quello che si desidera utilizzare è l'argomento maschera di pasta. vedere il docs, (scorrere verso il basso per paste)

from PIL import Image 
img = Image.open(basefile) 
layer = Image.open(layerfile) # this file is the transparent one 
print layer.mode # RGBA 
img.paste(layer, (xoff, yoff), mask=layer) 
# the transparancy layer will be used as the mask 
img.save(outfile) 
+3

Bravo! La documentazione del PIL non era chiara su cosa fosse la maschera - prima pensavo fosse un numero (perché hanno detto qualcosa come "se la maschera è 0, se la maschera è 255"), allora ho pensato che fosse come la scatola argomento, ma invece è stato usato per determinare quale parte dell'argomento dell'immagine sarebbe stata copiata. Ora ha più senso, grazie! – MarkTraceur

+0

Mi hai aiutato molto. Grazie – imkost

+8

oh perché mai non lo farebbe per impostazione predefinita ... – Claudiu

Problemi correlati