我有一个透明的png图片"foo.png“,我打开了另一个图片
im = Image.open("foo2.png");
现在我需要的是合并foo.png和foo2.png。
( foo.png包含一些文本,我想在foo2.png上打印这些文本)
发布于 2013-04-10 15:45:29
当背景图像也包含透明度时,Image.paste
不会按预期工作。您需要使用真正的Alpha Compositing。
Pillow2.0包含一个执行此操作的alpha_composite
函数。
background = Image.open("test1.png")
foreground = Image.open("test2.png")
Image.alpha_composite(background, foreground).save("test3.png")
编辑:两个镜像都需要是RGBA类型。因此,如果它们是调色板等,则需要调用convert('RGBA')
。如果背景没有alpha通道,则可以使用常规粘贴方法(应该更快)。
发布于 2017-09-08 19:19:52
也可以使用混合:
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
blended = Image.blend(im1, im2, alpha=0.5)
blended.save("blended.png")
发布于 2018-12-07 12:25:26
有类似的问题,但很难找到答案。以下函数允许您将带有透明度参数的图像粘贴到另一图像的特定偏移处。
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()
https://stackoverflow.com/questions/5324647
复制相似问题