Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PIL透明区_Python_Python Imaging Library - Fatal编程技术网

Python PIL透明区

Python PIL透明区,python,python-imaging-library,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)),fi

我正在将多边形添加到图像中,如下所示:

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

我错过什么了吗

这就是图像现在的样子


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

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

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


更新:我已经更改了条件,因此如果模式已经是RGBA,则它不会执行
转换
,而RGBA显然不需要转换。可能还有其他不需要转换的模式,但这些模式确实可以正常工作。

您能更详细地描述一下您的问题吗?我确实刚刚用你的部分代码成功地在jpg图像上画出了一个透明多边形。在我看来,透明是你可以看穿的东西,不透明度不到1度,但首先,很难从你的巨大图片中分辨出它出了什么问题。我想,问题是左边那个灰色变形的矩形?第二,正如我所说,它是有效的。我当然知道“透明”是什么意思,当我说它有效的时候,这就是我的意思。可能代码中的其他地方有问题。灰色矩形就是我在图像上绘制的多边形。这就是我用来做这件事的全部代码。好的,为了确定,我所做的是正确的,使图像不透明度小于1,对吗?这是正确的,适用于我的jpg。但是你的问题没有包含足够的细节。例如,原始图像的格式是什么。詹姆斯·霍尔德内斯(James Holderness)的回答表明,这可能是灰度GIF。你应该提到的,那不是真的。您可以很高兴地将RGBA透明图像粘贴到RGB图像中,效果如预期。@kirelagin但您不能将透明图像粘贴到单色图像上,我怀疑也不能粘贴灰度图像。我已经能够用单色图像重现这个问题,这些线条解决了这个问题。这并不是说目的地必须有透明度——但并非所有模式都支持粘贴透明度。嗯……好吧,听起来很合理。谢谢,我的问题是图像是灰色的GIF。一旦图像被png替换,它就会正常工作。