如何用Python Pillow合成100+张图片

-1 投票
1 回答
850 浏览
提问于 2025-04-18 14:56

现在我想把100多张图片合成一张图片(像.png格式的那种),我在用Pillow这个库(PIL的一个分支)。
我知道可以用“PIL.Image.blend(im1, im2, alpha)”来处理所有的图片,但合成后的颜色太浅了。
我想调整这100多张图片的颜色,而不是透明度(alpha)。
我知道还有一个可以调整的API是“PIL.Image.composite(image1, image2, mask)”,
但是使用它的时候总是提示有问题。

"im = Image.composite(p, im, "RGBA")"    # Am I using right?

p和im是通过API“PIL.Image.open(fp, mode='r')”打开的两个图片对象。

File "GA_engine.py", line 187, in test_create
    im = Image.composite(p, im, "RGBA")
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 2313, in composite
    image.paste(image1, None, mask)
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1313, in paste
    mask.load()
AttributeError: 'str' object has no attribute 'load'

1 个回答

1

你说的“修复”图片是什么意思其实不太清楚,不过看起来你是想把它们合并在一起。我不能确定你用的工具是不是对的,因为我不知道你想要达到什么效果,但我可以告诉你,你用这个工具的方式不太对:

如果你去看看Pillow的文档,你会发现Image.composite这个方法需要第三个参数是另一张图片,用作透明度的遮罩。

所以在“RGBA”这个地方,你需要提供一张和另外两张大小相同的图片。这样说清楚了吗?

撰写回答