@AlexaAioGram

Как наложить фото на гринскрин в Python?

Допустим, я присылаю фото в программу с зелёной областью, и потом программа предлагает прислать ещё одно фото, которое займёт место зелёной области. Можно-ли так сделать ? Я слышал что такое можно сделать через pil, но инфы по этому не нашёл, помогите кто знает
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@o5a
Можно так например. Учитывая указанный цвет зеленого, заменяем его по всему гринскрину на прозрачный, затем подмешиваем второе изображение с учетом этой маски.
Возможно есть более эффективные способы, но так тоже работает.
from PIL import Image

# заменяет указанный цвет на прозрачный
def make_transparent(image, color):
    new = []
    for item in image.getdata():
        if item[:3] == color:
            new.append((255, 255, 255, 0))
        else:
            new.append(item)
    image.putdata(new)

GREEN = (x, y, z) # указываем цвет нашего зеленого на "гринскрине"
img_filename = "images/image.png"
screen_filename = "images/green.png"

img = Image.open(img_filename).convert('RGBA')
screen = Image.open(screen_filename).convert('RGBA')

make_transparent(screen, GREEN)

new = Image.alpha_composite(img, screen)
new.save('new_image.png')


Другой вариант - аналогично перебирать оба изображения и использовать пиксели первого/второго в зависимости от цвета пикселя гринскрина.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы