如何用Python Pillow创建填充半透明颜色的三角形
im = Image.new('RGB', (255, 255))
draw = ImageDraw.Draw(im)
draw.polygon([(0, 0), (0, 255), (255, 255), (255, 0)], fill = 'white')
draw.polygon([(1,1), (20, 100), (100,20)], fill = (200, 0, 0)) # outline='red', fill='blue'
im.save('my_pic.png')
我知道怎么画一个三角形,并给它填充一些RGB颜色。但是我不知道怎么给它填充RGBA颜色(或者其他透明的颜色)。
另外,如果我能用透明颜色画第一个三角形,那么当我画第二个三角形时,第二个三角形会不会和第一个三角形的颜色混合呢?
1 个回答
3
创建两张图片,然后用 alpha_composite
来合并它们:
img1 = Image.new('RGBA', (255, 255)) # Use RGBA
img2 = Image.new('RGBA', (255, 255)) # Use RGBA
draw1 = ImageDraw.Draw(img1)
draw2 = ImageDraw.Draw(img2)
draw1.polygon([(0, 0), (0, 255), (255, 255), (255, 0)], fill = (255,255,255,255))
transparence = 100 # Define transparency for the triangle.
draw2.polygon([(1,1), (20, 100), (100,20)], fill = (200, 0, 0, transparence))
img = Image.alpha_composite(img1, img2)
img.save("my_pic.png", 'PNG')
颜色的透明度可以通过颜色的第四个值来设置,比如:
- color = (0, 0, 0, 255) => 这是黑色,没有透明度。
- color = (255, 255, 255, 0) => 这是白色,完全透明。