PRATHAMESH GIRI
PRATHAMESH GIRI

Reputation: 75

How to add image on gif using Pillow?

Actually I am doing some experiments with python but I came to the point where I want to add an image on a transparent GIF with dimensions of the image.

I am getting an error of bad transparency mask. Code -

from PIL import Image, ImageSequence
background = Image.open(...)
animated_gif = Image.open(...)

frames = []
for frame in ImageSequence.Iterator(animated_gif):
frame = frame.copy()

frame.paste(background, mask=bg)
frames.append(frame)
frames[0].save('output.gif', save_all=True, append_images=frames[1:])

Upvotes: 0

Views: 2329

Answers (2)

PRATHAMESH GIRI
PRATHAMESH GIRI

Reputation: 75

Here is the answer of my question...

from PIL import Image, ImageSequence
background = Image.open("img.jpg")
animated_gif = Image.open("GIFF.gif")

frames = []
for frame in ImageSequence.Iterator(animated_gif):
    output = background.copy()
    frame_px = frame.load()
    output_px = output.load()
    transparent_foreground = frame.convert('RGBA')
    transparent_foreground_px = transparent_foreground.load()
    for x in range(frame.width):
        for y in range(frame.height):
            if frame_px[x, y] in (frame.info["background"], frame.info["transparency"]):
                continue
            output_px[x, y] = transparent_foreground_px[x, y]
    frames.append(output)

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

Upvotes: 1

Senior0023
Senior0023

Reputation: 162

import Image
background = Image.open("test1.png")
foreground = Image.open("test2.png")
background.paste(foreground, (0, 0), foreground)
background.show()

I will explain the parameters for .paste() function. first - the image to paste second - coordinates third - This indicates a mask that will be used to paste the image. If you pass a image with transparency, then the alpha channel is used as mask.

If this is not what you want to do, please add a comment for your need.

Upvotes: 0

Related Questions