python - 我想要叠加两张图像,其中一张是透明的

标签 python image render

我正在尝试叠加两个图像,因为我知道其中一个图像已经是透明的!

我在网上查找了一些已经完成的内容,以下是我发现并适合我的内容:

from PIL import Image


img = Image.open(fr"D:\Prog\Automatisation\Photo tu preferes quoi\signature\signature_1.png")

background = Image.open(fr"D:\Prog\Automatisation\Photo tu preferes quoi\photo_1\oui_1.png")

background.paste(img, (0, 0), new_img)
background.save('how_to_superimpose_two_images_01.png',"PNG")
<小时/>

from PIL import Image


img = Image.open(fr"D:\Prog\Automatisation\Photo tu preferes quoi\signature\signature_1.png")
new_image = Image.new("RGBA", img.size, "WHITE")

background = Image.open(fr"D:\Prog\Automatisation\Photo tu preferes quoi\photo_1\oui_1.png")

background.paste(img, (0, 0), new_img)
background.save('how_to_superimpose_two_images_01.png',"PNG")

我的透明图像很好地放置在其他图像的前面,但透明部分已变成绿色,因此隐藏了其他图像

我该如何解决这个问题?

最佳答案

历尽千辛万苦,终于成功了! (我写它是为了下一个将为此奋斗的人!)

使图像透明的函数:(这里是所有黑色像素都是透明的,当然你可以在那里改变这个值)

from PIL import Image

def透明_1(myimage):

img = Image.open(myimage) # ex : fr"D:\Prog\Automatisation\Photo tu preferes quoi\signature\signature_1.png"
img = img.convert("RGBA")
datas = img.getdata()

newData = []
for item in datas:
    if item[0] == 0 and item[1] == 0 and item[2] == 0:
        newData.append((0, 0, 0, 0))
    else:
        newData.append(item)

img.putdata(newData)
img.save("image_transparente.png", "PNG") # ca enregistre l'image dans le même dossier que là où est le code

叠加两个图像的函数:

from PIL import Image

def superposer_img(ft,bg): # ft = 前面,bg = 背景

filename = ft
front = Image.open(filename, 'r')
filename1 = bg
background = Image.open(filename1, 'r')
text_img = Image.new('RGBA', background.size , (0, 0, 0, 0))
text_img.paste(background, (0,0))
text_img.paste(front, (0,0), mask=front)
text_img.save("image.png", format="png")

以及调用函数的程序:

import sys 
sys.path.append(fr"D:\Prog\Automatisation\Fonction")

from Superposer_image import superposer_img as supimg
from Image_Transparente import transparent_1 as tr


tr(fr"D:\Prog\Automatisation\Photo tu preferes quoi\signature\signature_1.png")

supimg("image_transparente.png",fr"D:\Prog\Automatisation\Photo tu preferes 
quoi\photo_1\a.png")

关于python - 我想要叠加两张图像,其中一张是透明的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56856906/

相关文章:

javascript - 我可以使用什么原生 javascript api 来确定图像是否已完成加载?

python:如何导入模块

python - Django - 从 F 表达式获取值

Python OpenCV 从二值图像中检测到一个白色物体并裁剪它

r - RStudio 中 knitr 按钮在呈现位于 blogdown 静态文件夹中的 Rmd 文件时的行为

javascript - 在 Angular 中渲染对象的对象

c++ - 用 C++ 编程的 DAW 使用什么来进行图形渲染和音频输出?

python - Ansible的模板模块在哪里?

python - 重用 SystemRandom 是 Python 的好做法吗?

JavaScript Canvas drawImage 使我的图像变形