我正在尝试使用此this approach为图像添加半透明多边形。问题是图像是JPEG。我知道JPEG没有alpha通道,所以我希望有一种方法可以让PIL接收JPEG,将其转换为具有alpha通道的形式,添加半透明蒙版,然后合并使用图像进行遮罩并将其转换回JPEG以进行保存。 PIL可以做到这一点吗?如果没有,我还能怎么做呢?谢谢!
答案 0 :(得分:5)
这很容易。只需将jpeg粘贴到新的rgba Image()
:
#!/usr/bin/env python3
from PIL import Image
from PIL import ImageDraw
im = Image.open("existing.jpg")
logo = Image.open("python-32.png")
back = Image.new('RGBA', im.size)
back.paste(im)
poly = Image.new('RGBA', (512,512))
pdraw = ImageDraw.Draw(poly)
pdraw.polygon([(128,128),(384,384),(128,384),(384,128)],
fill=(255,255,255,127),outline=(255,255,255,255))
back.paste(poly, (0,0), mask=poly)
back.paste(logo, (im.size[0]-logo.size[0], im.size[1]-logo.size[1]), mask=logo)
back.show()
另外还为图像添加了一个png(带透明度)。