我正在为这样的图像添加多边形:
image = Map.objects.all()[0].image
back = Image.open(image.path)
draw = ImageDraw.Draw(back)
poly = Image.new('RGBA', (image.width,image.height))
pdraw = ImageDraw.Draw(poly)
pdraw.polygon(list(group(self.coords.split(","), 2)),fill=(255,255,255,127),outline=(255,255,255,255))
back.paste(poly,mask=poly)
back.show()
因此,这会在正确的区域等中打开多边形的图像。
但我希望它自己的多边形是半透明的,就像不透明度为0.8一样,这样多边形只是一个颜色叠加,你仍然可以看到它。
我脑海中的透明度不透明度低于1?或者这不是什么意思
我错过了什么吗?
这就是现在的图像
答案 0 :(得分:2)
我怀疑源图像的模式不支持透明度。您可以通过在打开图像后添加以下行来解决问题。
if back.mode not in ['RGB','RGBA']:
back = back.convert('RGB')
引用PIL documentation for Image.paste:
如果模式不匹配,粘贴的图像将转换为此图像的模式
更新:我已经更改了条件,因此如果模式已经是RGBA,它就不会执行convert
,这显然不需要转换。可能还有其他模式不需要转换,但那些模式肯定是按原样运行的。