【发布时间】:2012-12-10 23:06:23
【问题描述】:
这里有很多关于 SO 的问题提供了当前问题的答案,但是输出不是预期的。
目标是合并两个 RGBA 图像。每张图片的alpha通道信息都不一样。
当前(简化的)代码是:
from PIL import Image
image = '1.png'
watermark = '2.png'
wmark = Image.open(watermark)
img = Image.open(image)
img.paste(wmark, (0, 0), wmark)
img.save("result.png", "PNG")
这两张图片是:
背景
前景
预期输出
实际结果
如果您没有看到差异,这里是最终版本的 Alpha 通道(为了更好的可视化而倒置)。
预期结果 - Alpha 通道
实际结果 - alpha 通道
话虽如此,有什么办法可以做到这一点还是我做错了什么?
编辑 - @zenpoy 评论后的澄清:
如果前景图像有一定的不透明度,我希望在叠加两张图像时考虑到这一点,但我不希望将第二张图像的 Alpha 通道添加到第一张图像中。就像将一块玻璃(前景图像)放在纸质图像(背景)前面一样。
换句话说,如果背景图像是 RGB 而不是 RGBA,那么最终图像应该没有 alpha 信息。
【问题讨论】:
-
您能提供一个数学解释来说明您要达到的目标吗?您对每个通道中每个像素的值有何期望?
-
我一直对 PIL 无法正确处理 alpha 感到失望。
标签: python python-imaging-library