1

我正在处理多个图像,我想将它们堆叠在一起以创建单个图像。但是,在与他们合作时,我注意到如果图像已经具有透明度(alpha != 255),则图像的该部分会出现褪色。如果没有透明度,一切都很好。

我将我正在使用的一张图像保存到 PNG 中,并创建了一小段重复问题的代码。本质上,我正在创建一个具有透明背景的新图像,然后将图像粘贴到顶部:

from PIL import Image

img=Image.new('RGBA', (946,627), (0,0,0,0))
overlayImage = Image.open('drawing.png')
img.paste(overlayImage, (0,0), overlayImage)
img.save('drawing-pasted.png')

完成后,drawing-pasted.png 看起来像这样:

绘图粘贴.png

但原图(drawing.png)看起来像这样:

绘图.png

(手动裁剪图像以显示细节。)原始图像圆圈填充颜色的 alpha 值为 179。

有没有其他人遇到过这个,我做错了什么?

非常感谢。

4

2 回答 2

1
image = Image.open(file_path)
img1 = Image.open(file_path)
cords = (233.22)
image.paste(img1, cords, mask=img1)
image.save(path_where_you_want_to_save_final_image)

只需使用此代码块

于 2021-08-30T13:18:12.547 回答
0

您正在创建的背景是黑色且完全透明的,原件是蓝色的,但 alpha 为 179,因此您有 2 个像素 (0,0,0,0) 和 (0,0,255,179)假设 100% 蓝色- 因为您正在粘贴其中的图像将背景之上,因此将使用新图像的 alpha 值,允许 (255-179)/255 或大约 30% 黑色。 (注意背景的 alpha 没有区别,因为它在新图像的后面)

您可以使用overlayImage.putalpha从图像而不是黑色背景开始将 alpha 设置为 255。

于 2013-09-07T14:54:15.587 回答