1

我有以下代码:

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()

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

如果这样的东西不可用,是否有一种很好、简单、有效的方法可以把这样的东西放在图书馆里?

4

2 回答 2

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
于 2013-08-16T22:10:33.700 回答
0

这可能会有所帮助:

如何用 Python 绘制透明多边形?

要为最终图像添加 alpha 通道,您可以使用Image.putalpha(alpha)

于 2014-02-14T00:02:51.433 回答