透明区域与PIL

时间:2013-05-30 17:04:42

标签: python python-imaging-library

我正在为这样的图像添加多边形:

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?或者这不是什么意思

我错过了什么吗?

这就是现在的图像

enter image description here

1 个答案:

答案 0 :(得分:2)

我怀疑源图像的模式不支持透明度。您可以通过在打开图像后添加以下行来解决问题。

if back.mode not in ['RGB','RGBA']:
  back = back.convert('RGB')

引用PIL documentation for Image.paste

  

如果模式不匹配,粘贴的图像将转换为此图像的模式

更新:我已经更改了条件,因此如果模式已经是RGBA,它就不会执行convert,这显然不需要转换。可能还有其他模式不需要转换,但那些模式肯定是按原样运行的。