Python PIL:使多边形外的像素透明

Python PIL:使多边形外的像素透明,python,python-imaging-library,Python,Python Imaging Library,目前,为了使多边形透明,我正在做 img = Image.open("") back = Image.new('RGBA', img.size) back.paste(img) poly = Image.new('RGBA', (512,512)) pdraw = ImageDraw.Draw(poly) pdraw.rectangle([(10,10),(100,100)], fill=(255,255,255,200)) back.paste(poly, (0,0),

目前,为了使多边形透明,我正在做

img = Image.open("")
back = Image.new('RGBA', img.size)
back.paste(img)
poly = Image.new('RGBA', (512,512))
pdraw = ImageDraw.Draw(poly)
pdraw.rectangle([(10,10),(100,100)],
          fill=(255,255,255,200))

back.paste(poly, (0,0), mask=poly)
back.show()
但是我想要的是多边形外部的所有区域都是透明的,多边形内部的区域是相同的。基本上,与我现在所做的相反。

你可以用它来反转遮罩

from PIL import ImageOps   

img = Image.open("")
back = Image.new('RGBA', img.size)
back.paste(img)
poly = Image.new('RGBA', (512,512))
pdraw = ImageDraw.Draw(poly)
pdraw.rectangle([(10,10),(100,100)],
          fill=(255,255,255,200))
inverted_poly = ImageOps.invert(poly)
back.paste(poly, (0,0), mask=inverted_poly)
back.show()
注意:ImageOps.invert(多边形)不适用于RGB图像。必须使用来解决这个问题。