gpt4 book ai didi

python - 设置图像的 alpha 值(通过 PIL/Pillow)

转载 作者:行者123 更新时间:2023-11-30 22:37:56 29 4
gpt4 key购买 nike

我有一个基本图像,在其顶部,我尝试粘贴一条 50% Alpha 的黑色 strip 。这是我一直在测试的内容:

from PIL import Image, ImageFont, ImageDraw

base_width, base_height = base_img.size
if base_img.mode != 'RGB':
base_img = base_img.convert("RGB")
black_strip = Image.new('RGBA', (base_width, 20),(0,0,0,128)) #creating the black strip
offset = (0,base_height/2)
base_img.paste(background,offset)

生成的黑色 strip 不具有 alpha 透明度;它是完全固体的。示例:

enter image description here

有人可以帮我改进这个吗?

最佳答案

正如您所注意到的,Image.paste 会忽略粘贴图像的 Alpha channel 。但是,它确实需要一个可选的 mask 参数。这接受 RGBA 图像作为输入,提取其 alpha channel ,因此您应该能够再次传入粘贴的图像:

base_img.paste(black_strip, offset, black_strip)

如果原始图像没有 mask ,这也可以轻松生成 mask 。例如,以下代码将粘贴 RGB 图像,但使其黑色区域透明:

mask = rgb_img.point(lambda i: min(i * 25, 255)).
base_img.paste(rgb_img, offset, mask)

PS 上述建议仅在基础图像没有 Alpha channel (其模式为 RGB,而不是 RGBA)时才有效。否则,您可能应该使用 Image.alpha_composite 来组合图像,尽管令人烦恼的是您可能首先必须填充或裁剪粘贴的图像,使其与基本图像的大小相同。

关于python - 设置图像的 alpha 值(通过 PIL/Pillow),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43730128/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com