我有两个相同大小的 png 图像(A 和 B),第二个(B)是部分透明的。
如果我使用代码将图像 B 粘贴到图像 A 中
base.paste(overlay, mask=overlay)
我得到了它们近乎完美的组合。
但我想在将图像 B 粘贴到图像 A 之前先使其变亮。我尝试使用像 Image.new("L", size, 80) 这样的遮罩,我可以用它来使图像 (B) 变亮,但它也会使图像变暗 ( A) 并且不得修改。
在命令行上,我可以使用 ImageMagick 执行我想要的操作,如下所示:
composite -dissolve 40 overlay.png base.png result.png
这正是我所需要的,但是我怎样才能用 python 做到这一点呢?
根据我自己的理解,溶解选项仅修改 Alpha 通道。因此,如果您希望 alpha 通道仅保留其值的 40%,您可以在 PIL 中执行相同的操作:
from PIL import Image
overlay = Image.open('overlay.png')
base = Image.open('base.png')
bands = list(overlay.split())
if len(bands) == 4:
# Assuming alpha is the last band
bands[3] = bands[3].point(lambda x: x*0.4)
overlay = Image.merge(overlay.mode, bands)
base.paste(overlay, (0, 0), overlay)
base.save('result.png')
在此代码中,我将图像分割为多个带区。如果有四个,我假设最后一个代表 Alpha 通道。因此,我只需将其值乘以 0.4 (40%),然后创建一个要粘贴到基础图像上的新图像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)