PIL - 将半透明多边形添加到JPEG

时间:2014-04-26 16:36:12

标签: python image python-imaging-library alpha-transparency

我正在尝试使用此this approach为图像添加半透明多边形。问题是图像是JPEG。我知道JPEG没有alpha通道,所以我希望有一种方法可以让PIL接收JPEG,将其转换为具有alpha通道的形式,添加半透明蒙版,然后合并使用图像进行遮罩并将其转换回JPEG以进行保存。 PIL可以做到这一点吗?如果没有,我还能怎么做呢?谢谢!

1 个答案:

答案 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(带透明度)。