使用 Pillow putalpha 设置图像透明度时,两个图像不能完美对齐

问题描述 投票:0回答:1

我正在学习使用 Pillow 库来处理图像,并且我正在按照本教程(https://note.nkmk.me/en/python-pillow-putalpha/)使用

putalpha()
方法。我可以使用
horse.png
horse_r.png
将图像的不同部分设置为透明。然而,我发现当我将这两张图像放在 Microsoft Word 或 Powerpoint 文档或 PhotoShop 中时,一张放在另一张上,总是会显示马的白线轮廓。我检查了两张图片中白线出现的坐标处的像素值,看起来都是正确的,两张图片上没有任何像素的alpha设置为0。我想知道这条白线从哪里来以及如何让它消失?

这是代码的两张图片:

这是我用来生成这两个图像的代码:

from PIL import Image, ImageDraw, ImageFilter, ImageOps

im_check = Image.open('horse.png').convert('1')
im_check.save('horse.png')
im_check_r = ImageOps.invert(im_check)
im_check_r.save('horse_r.png')

im_rgb = Image.open('lena.jpg')
im_a = Image.open('horse.png').convert('1').resize(im_rgb.size)
im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba.save('1.png')

im_a = Image.open('horse_r.png').convert('1').resize(im_rgb.size)
im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba.save('2.png')

python python-imaging-library png
1个回答
0
投票

尝试合成您保存的图像,

p2.png
超过
p1.png
,如下所示:

from PIL import Image

# Open your saved images
p1 = Image.open('1.png')
p2 = Image.open('2.png')

# Composite p2.png over p1.png
composite = Image.alpha_composite(p1, p2)

# Save result
composite.save('result.png')

© www.soinside.com 2019 - 2024. All rights reserved.