2010-12-07 4 views
9

Je me sers de PIL pour recadrer les images, maintenant je veux aussi rendre certaines zones rectangulaires transparentes, disentPython PIL: comment faire zone transparente en PNG?

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

J'apprécierions vraiment un code que je ne l'ai pas été en mesure de trouver, grâce beaucoup d'avance!

Cheers,

Hoff

Répondre

20
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 comment faire cela here.

+1

Vous a mis à jour parce que le code suit à peu près exactement ce que j'ai écrit. – kindall

+0

En effet, @kindall, nos réponses sont à peu près identiques! :) – unutbu

2

Aucun code source, mais ceci est l'approche générale qui devrait fonctionner: créer un canal alpha pour l'image en mode "L" (niveaux de gris) comme objet image distincte. Remplissez le canal alpha avec du blanc (opacité complète) et dessinez le rectangle sur l'image du canal alpha en noir (transparence complète). Convertir l'image à laquelle vous souhaitez appliquer la transparence à RGBA et utiliser la méthode objet image putalpha() pour copier le canal alpha vous avez créé dans le canal alpha de l'image. Enregistrer en tant que PNG.

Questions connexes