首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageEnhance.Brightness在枕头中的行为变化

ImageEnhance.Brightness在枕头中的行为变化
EN

Stack Overflow用户
提问于 2016-08-22 16:05:11
回答 1查看 1.2K关注 0票数 0

我试图用半不透明度将图像B粘贴到图像A上(即粘贴的图像是半透明的)。

在枕头的2.1.0版本中,下面的代码起作用了,在3.3.1版本中,它不再工作了:

代码语言:javascript
复制
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)

图像A 图像B

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-22 18:23:35

枕头是正确的,改变像素的亮度不应该改变它的透明度。很明显在PIL里有个bug。

你真正想要的是把阿尔法从图像B中分离出来,然后把它变成一个面具。使用这个答案的技术

代码语言:javascript
复制
mask = B.split()[-1]
enhancer = ImageEnhance.Brightness(mask)
mask = enhancer.enhance(0.5)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39084077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档