2010-12-07 11 views
9

He estado usando PIL a recortar las imágenes, ahora yo también quiero hacer ciertas áreas rectangulares transparente, dicenPython PIL: cómo hacer que el área sea transparente en PNG?

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

Te lo agradecería algún código ya que no he sido capaz de encontrarlo, gracias ¡Mucho antes!

Cheers,

Hoff

Respuesta

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') 

Aprendí a hacer esto here.

+1

Te voté en alta, porque el código sigue casi exactamente lo que escribí. – kindall

+0

De hecho, @kindall, ¡nuestras respuestas son casi idénticas! :) – unutbu

2

No código fuente, pero este es el enfoque general que debería funcionar: Crear un canal alfa para la imagen en el modo (escala de grises) como un objeto de imagen separada "L". Llene el canal alfa con blanco (opacidad completa) y dibuje el rectángulo en la imagen del canal alfa en negro (transparencia completa). Convierta la imagen a la que desea aplicar la transparencia a RGBA y utilice el método de imagen putalpha() para copiar el canal alfa que creó en el canal alfa de la imagen. Guardar como PNG.

Cuestiones relacionadas