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.
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.
Note that the default argument for savefig() is transparent=False. By specifying transparent=True we can save a Matplotlib figure with a transparent background.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With