首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用PIL将透明的png图像与另一图像合并

如何使用PIL将透明的png图像与另一图像合并
EN

Stack Overflow用户
提问于 2011-03-16 19:34:00
回答 5查看 160.7K关注 0票数 192

我有一个透明的png图片"foo.png“,我打开了另一个图片

代码语言:javascript
复制
im = Image.open("foo2.png");

现在我需要的是合并foo.png和foo2.png。

( foo.png包含一些文本,我想在foo2.png上打印这些文本)

EN

回答 5

Stack Overflow用户

发布于 2013-04-10 15:45:29

当背景图像也包含透明度时,Image.paste不会按预期工作。您需要使用真正的Alpha Compositing

Pillow2.0包含一个执行此操作的alpha_composite函数。

代码语言:javascript
复制
background = Image.open("test1.png")
foreground = Image.open("test2.png")

Image.alpha_composite(background, foreground).save("test3.png")

编辑:两个镜像都需要是RGBA类型。因此,如果它们是调色板等,则需要调用convert('RGBA')。如果背景没有alpha通道,则可以使用常规粘贴方法(应该更快)。

票数 83
EN

Stack Overflow用户

发布于 2017-09-08 19:19:52

也可以使用混合:

代码语言:javascript
复制
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
blended = Image.blend(im1, im2, alpha=0.5)
blended.save("blended.png")
票数 16
EN

Stack Overflow用户

发布于 2018-12-07 12:25:26

有类似的问题,但很难找到答案。以下函数允许您将带有透明度参数的图像粘贴到另一图像的特定偏移处。

代码语言:javascript
复制
import Image

def trans_paste(fg_img,bg_img,alpha=1.0,box=(0,0)):
    fg_img_trans = Image.new("RGBA",fg_img.size)
    fg_img_trans = Image.blend(fg_img_trans,fg_img,alpha)
    bg_img.paste(fg_img_trans,box,fg_img_trans)
    return bg_img

bg_img = Image.open("bg.png")
fg_img = Image.open("fg.png")
p = trans_paste(fg_img,bg_img,.7,(250,100))
p.show()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5324647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档