在Python Pillow / PIL中绘制不同透明度的多边形

时间:2013-08-16 21:33:11

标签: 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()

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

如果没有这样的东西,有没有一种很好,简单,有效的方法将这样的东西放在图书馆里?

2 个答案:

答案 0 :(得分:5)

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

  

<强> im.show()

     
    

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

         

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

  

据我所知,PPM file format 支持透明度(“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

答案 1 :(得分:0)

这可能会有所帮助:

How do you draw transparent polygons with Python?

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