gpt4 book ai didi

python - 如何更改 PIL 中矩形的不透明度?

转载 作者:行者123 更新时间:2023-12-04 04:13:09 29 4
gpt4 key购买 nike

我正在尝试实现类似于下图的效果,半透明的黑框上写着:Desired

忽略它们是不同图像的事实,但我想实现与上图类似的半透明矩形效果。我目前的代码是:

from PIL import Image, ImageDraw

img = Image.new('RGBA', (512, 512), (255, 0, 0, 0))
draw = ImageDraw.Draw(img, 'RGBA')
shape = [(0, 512), (512, 308)]
draw.rectangle(shape, fill = 'black')

img.save('foo.png')


img2 = Image.open('final2.png')


Image.alpha_composite(img2, img).save('foo3.png')

这会产生以下输出:

Output (忽略白色边框 - 这只是一个粗略的截图)

我已经尝试过 putalpha,但它只会使黑色矩形变成灰色并且仍然不透明。另外,我尝试创建一个透明图像,其大小与我想要绘制框的图像相同(512x512),然后在该透明图像的底部绘制一个矩形,然后使用混合,但图像的颜色搞砸了因为上面混合了白色图像。

感谢任何帮助。

编辑:仍然需要帮助!

最佳答案

请小心提供输入、输出和预期的输出图像。我将以下文本叠加在透明背景上并添加了洋红色边框,以便您可以看到它的范围:

enter image description here

然后我将您的代码改写为:

#!/usr/bin/env python3

from PIL import Image, ImageDraw

# Create new solid red background
h, w = 400, 600
bg = Image.new('RGB', (w, h), (255, 0, 0))

# Create copy and make bottom part black
dark = bg.copy()
draw = ImageDraw.Draw(dark)
draw.rectangle((0, int(0.7*h), w, h), 0)
dark.save('dark.png') # DEBUG

# Blend darkened copy over top of background
blended = Image.blend(bg, dark, 0.8)
blended.save('blended.png') # DEBUG

# Load text overlay with transparent background, paste on top and save
overlay = Image.open('text.png').convert('RGBA')
blended.paste(overlay, mask=overlay)
blended.save('result.png')

这给出了这个结果:

enter image description here

关于python - 如何更改 PIL 中矩形的不透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61343636/

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