Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

transparent background in gif using Python Imageio

Basically I am using following piece of code to make gif out of images, my images are png with transparent background but the gif is with black background. I dont know how to make the gif with transparent background.

#gif writer
with io.get_writer('my.gif', mode='I', duration=0.1) as writer:
    for filename in file_names:
        image = io.imread(filename)
        writer.append_data(image)
#writer.close()

where filenames is an array with all the names of file to be used.

like image 701
kada Avatar asked Oct 20 '17 13:10

kada


People also ask

Does GIF support background transparency?

Background transparency, supported by the GIF and PNG formats, preserves transparent pixels in the image and allows the background of the web page to show through the transparent areas of your image.

How do I save an image with a transparent background in Python?

Note that the default argument for savefig() is transparent=False. By specifying transparent=True we can save a Matplotlib figure with a transparent background.


1 Answers

try PIL

from PIL import Image

def gen_frame(path):
    im = Image.open(path)
    alpha = im.getchannel('A')

    # Convert the image into P mode but only use 255 colors in the palette out of 256
    im = im.convert('RGB').convert('P', palette=Image.ADAPTIVE, colors=255)

    # Set all pixel values below 128 to 255 , and the rest to 0
    mask = Image.eval(alpha, lambda a: 255 if a <=128 else 0)

    # Paste the color of index 255 and use alpha as a mask
    im.paste(255, mask)

    # The transparency index is 255
    im.info['transparency'] = 255

    return im


im1 = gen_frame('frame1.png')
im2 = gen_frame('frame2.png')        
im1.save('GIF.gif', save_all=True, append_images=[im2], loop=5, duration=200)
like image 131
FelixHo Avatar answered Oct 22 '22 22:10

FelixHo