2010-12-07 21 views
9
Şimdi ben de bazı dikdörtgen alanlar saydam yapmak istiyorum Görüntüleri kırpmak için PIL kullanıyorum

, bunu bulmak mümkün olmamıştır olarakPython PIL: PNG'de alan nasıl şeffaflaştırılır?

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

Bazı kod takdir gerçekten dememiş, teşekkürler çok önceden!

alkış

Hoff

cevap

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

Bunu nasıl yapılacağını öğrendim here.

+1

Çünkü kod, tam olarak yazdıklarımı tam olarak takip ettiğinden dolayı size destek verildi. – kindall

+0

Evet, @kindall, cevaplarımız hemen hemen aynı! :) – unutbu

2

Resim kaynak kodu, ancak bu işe gereken genel bir yaklaşımdır: "L", ayrı bir görüntü nesnesi olarak (gri tonlama) modunda görüntü için alfa kanal oluşturur. Alfa kanalını beyaz (tam opaklık) ile doldurun ve alfa kanalı görüntüsündeki dikdörtgeni siyah olarak (tam saydamlık) çizin. Saydamlığı RGBA'ya uygulamak istediğiniz görüntüyü dönüştürün ve oluşturduğunuz alfa kanalı görüntünün alfa kanalına kopyalamak için görüntü nesnesini putalpha() yöntemini kullanın. PNG olarak kaydet.