Python PIL: comment rendre la zone transparente en PNG?

j'ai utilisé PIL pour recadrer des Images, Maintenant je veux aussi rendre certaines zones rectangulaires transparentes, dire

from PIL import Image
im = Image.open("sample.png")
transparent_area = (50,80,100,200)
...

j'apprécierais vraiment un peu de code car je n'ai pas pu le trouver, Merci beaucoup à l'avance!

Cheers,

Hoff

10
demandé sur Hoff 2010-12-07 21:03:33

2 réponses

import Image
import ImageDraw
im = Image.open("image.png")
transparent_area = (50,80,100,200)

mask=Image.new('L', im.size, color=255)
draw=ImageDraw.Draw(mask) 
draw.rectangle(transparent_area, fill=0)
im.putalpha(mask)
im.save('/tmp/output.png')

j'ai appris à faire ceci ici .

24
répondu unutbu 2017-05-23 12:09:55

pas de code source, mais c'est l'approche générale qui devrait fonctionner: créer un canal alpha pour l'image en mode "L" (échelle de gris) comme un objet image séparé. Remplissez le canal alpha de blanc (opacité totale) et dessinez le rectangle sur l'image du canal alpha en noir (transparence totale). Convertissez l'image à laquelle vous voulez appliquer la transparence à RGBA et utilisez la méthode putalpha() pour copier le canal alpha que vous avez créé dans le canal alpha de l'image. Enregistrer en tant que fichiers PNG.

2
répondu kindall 2010-12-07 18:47:08