191 votes

Comment fusionner une image png transparente avec une autre image à l'aide de PIL

J'ai une image png transparente "foo.png" et j'ai ouvert une autre image avec

im = Image.open ("foo2.png");

Maintenant, ce dont j'ai besoin, c'est de fusionner foo.png avec foo2.png.

(foo.png contient du texte et je veux l'imprimer sur foo2.png)

370voto

nosklo Points 75862
 import Image

background = Image.open("test1.png")
foreground = Image.open("test2.png")

background.paste(foreground, (0, 0), foreground)
background.show()
 

Le premier paramètre à .paste() est l'image à coller. Deuxièmement, les coordonnées et la sauce secrète est le troisième paramètre. Il indique un masque qui sera utilisé pour coller l'image. Si vous transmettez une image avec transparence, le canal alpha est utilisé comme masque.

Vérifiez la documentation .

83voto

olt Points 899

Image.paste ne fonctionne pas comme prévu lorsque l'image d'arrière-plan contient également de la transparence. Vous devez utiliser de véritables composites Alpha .

Oreiller 2.0 contient une fonction alpha_composite qui le fait.

 background = Image.open("test1.png")
foreground = Image.open("test2.png")

Image.alpha_composite(background, foreground).save("test3.png")
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X