改变了Pillow中ImageEnhance.Brightness的行为

时间:2016-08-22 16:05:12

标签: python image python-imaging-library brightness

我正在尝试将图像B粘贴到具有半透明度的图像A上(即粘贴的图像是半透明的)。

在枕头版本2.1.0中,以下代码有效,在版本3.3.1中它不再有效:

A = Image.open('A.png')

B = Image.open('B.png')
enhancer = ImageEnhance.Brightness(B)
mask = enhancer.enhance(0.5)
print(mask.getpixel((10,10)), mask.getpixel((30,30)))
mask.save('Mask.png')

A.paste(B, (0,0), mask)
A.save('Result.png')

图像A是白色背景上的黑色“A”

图像B是透明背景上的红色“B”

图片在下面提供

版本2.1.0为掩码的像素30,30产生(127,0,0,127)

版本3.3.1为掩码的像素30,30产生(127,0,0,255)

Image A Image B

1 个答案:

答案 0 :(得分:1)

枕头是正确的,改变像素的亮度不应改变其透明度。显然PIL中有一个错误。

你真正想要的是从图像B中分割出alpha并将 转换为蒙版。使用this answer中的技术:

mask = B.split()[-1]
enhancer = ImageEnhance.Brightness(mask)
mask = enhancer.enhance(0.5)