@ymkvaaaa

Как сделать наложение гиф на на изображение?

у меня есть изображение на которое нужно наложить гифку со снежинками, чтоб по итогу получалось изображение с падающим снегом, как это можно реализовать ?
def add_snow_animation(main_photo, user_id):
    transparent_foreground = Image.open(cfg.DIR + f'IMAGES_USERS/command_menu_{user_id}.jpg')
    animated_gif = Image.open(cfg.DIR + 'snow_gif.gif')

    frames = []
    for frame in ImageSequence.Iterator(animated_gif):
        layer = Image.new("RGBA", i_photo.size)
        main_photo.paste(layer, (0, 0))

        layer.paste(frame, (0, 0))
        layer.paste(i_photo, (0, 0))

        result = Image.alpha_composite(i_photo, layer)
    main_photo.save(cfg.DIR + f'IMAGES_USERS/command_menu_{user_id}.gif', save_all=True, append_images=frames[1:])
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
hardy_99
@hardy_99
Python developer
from PIL import Image, ImageSequence
from files import my_image, snow_animation


def add_snow_animation():
    animated_gif = Image.open(snow_animation)
    background = Image.open(my_image)

    background = background.convert("RGBA")

    frames = []
    for frame in ImageSequence.Iterator(animated_gif):
        frame = frame.resize(background.size)

        frame = frame.convert("RGBA")

        blended_frame = Image.blend(background, frame, alpha=0.5)

        frames.append(blended_frame)

    output_gif_path = 'output.gif'
    frames[0].save(output_gif_path, save_all=True, append_images=frames[1:], duration=animated_gif.info['duration'],
                   loop=0)


if __name__ == '__main__':
    add_snow_animation()
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы