Я смотрю, чтобы наложить два изображения, одно из которых является прозрачным - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь наложить два изображения, зная, что одно из них уже прозрачно!

Я посмотрел в Интернете немного того, что уже было сделано, вот что я нашел и адаптировал для меня:

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")

Мое прозрачное изображение хорошо расположено перед другим моим изображением, но прозрачная часть стала зеленой и поэтому скрывает другое изображение

Как я могу это исправить?

1 Ответ

0 голосов
/ 02 июля 2019

После долгих хлопот я наконец-то это сделал!(Я пишу это для следующих парней, которые будут бороться с этим!)

Функция, которая делает изображение прозрачным: (здесь, это все черные пиксели, которые прозрачны, вы можете изменить это значение там, конечно)

from PIL import Image

def transparent_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 = front, bg = background

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...