Как добавить gif-изображения к png?

Есть такой код:

from PIL import Image, ImageSequence

GIF_PATH = "C:/Users/RAINGM/desktop/mercy.gif"
IMAGE_PATH = "C:/Users/RAINGM/desktop/background.png"

gif = Image.open(GIF_PATH)
image = Image.open(IMAGE_PATH).resize((120, 120)).convert("P")

frames = [f.copy() for f in ImageSequence.Iterator(gif)]

for i, frame in enumerate(frames):
    frame = frame.convert("RGBA")
    frame.paste(image, (50, 50))
    frames[i] = frame

frames[0].save("C:/Users/RAINGM/desktop/output.gif", save_all=True, append_images=frames[1:])

При выполнении я получаю gif, в нём бэкграунд, как это выполнить наоборот, чтобы бэкграунд был позади?


Ответы (1 шт):

Автор решения: Peter Lavreniuk

Вот решение:

from PIL import Image, ImageSequence

GIF_PATH = "mercy.gif"
IMAGE_PATH = "background.png"

gif = Image.open(GIF_PATH)

image = Image.open(IMAGE_PATH).resize((200, 200)).convert("P")

frames = [f.copy() for f in ImageSequence.Iterator(gif)]

for i, frame in enumerate(frames):
    temp = Image.new("RGB", (200, 200), color="black")
    temp.paste(image, (0, 0))
    frame = frame.convert("RGBA")
    temp.paste(frame, (0, 0), frame)
    frames[i] = temp

frames[0].save("output.gif", save_all=True, append_images=frames[1:])

Необходимо просто делать темповую картинку. Туда вначале кидать png, а потом фрейм, с учетом маски!

Итоговая гифка:

введите сюда описание изображения

P.S. она должна быть побольше, просто SO не разрешает выше 2мб прикладывать графические файлы. ну и чисто рандомные картинки подобрал.

→ Ссылка