在Python枕头/ PIL中彼此顶部绘制透明度不同的多边形

use*_*304 1 python python-imaging-library pillow

我有以下代码:

im = Image.new("RGBA", (800,600))
draw = ImageDraw.Draw(im,"RGBA")
draw.polygon([(10,10),(200,10),(200,200),(10,200)],(20,30,50,125))
draw.polygon([(60,60),(250,60),(250,250),(60,250)],(255,30,50,0))
del draw 
im.show()
Run Code Online (Sandbox Code Playgroud)

但多边形之间的alpha /透明度没有任何差异。是否可以使用这些多边形执行此操作,或者Alpha级别仅适用于合成图像(我知道此解决方案,但仅查看基于PIL的注释,并认为我已经在Pillow中看到了此问题)。

如果没有这样的东西,是否有一种很好,简单,有效的方式将类似这样的东西放入库中?

Syl*_*oux 5

根据文档http://effbot.org/imagingbook/image.htm

im.show()

显示图像。此方法主要用于调试目的

在Unix平台上,此方法将映像保存到临时PPM文件,然后调用xv实用程序。

而据我所知,PPM文件格式不能支持透明度(“alpha通道”)。


所以...调用时不会显示透明度im.show()-但是如果您使用支持透明度的格式保存文件,则会应用透明度:

from PIL import Image,ImageDraw

im = Image.new("RGBA", (800,600))
draw = ImageDraw.Draw(im,"RGBA")
draw.polygon([(10,10),(200,10),(200,200),(10,200)],(20,30,50,125))
draw.polygon([(60,60),(250,60),(250,250),(60,250)],(255,30,50,120))
del draw

im.save("out.png") # Save to file
Run Code Online (Sandbox Code Playgroud)