Find the duration of GIF image in Python
After reading this post, you will have a general idea of how you can work with gifs using PIL(Python Imaging Library). Access its metadata information and find relevant ( human-readable) results. Here is a simple program to find the duration of GIF image in Python.
Installation of the PIL module in Python 3.7
you can install PIL by typing, the following command on your terminal:
pip install pillow
Reading Image info using Pillow:
you can open any image and read its info, by simply typing this:
from PIL import Image print(Image.open('sample.gif').info) # return dictionary object # which can be accessed similar to any python dictionary.
Getting the Duration of the GIF
If you simply type this command, print(Image.open('sample.gif').info['duration'])
you’ll get some value but that is not the actual duration of the GIF, instead, that one is the frame duration of (generally) the first frame (frame 0).
So to do this operation, you need to loop through all the frames of that .gif file and sum up the duration until no frames are left or an EOFError
is generated.
So I have used this gif for my code:
Code for this looks like:
import os from PIL import Image def find_duration(img_obj): img_obj.seek(0) # move to the start of the gif, frame 0 tot_duration = 0 # run a while loop to loop through the frames while True: try: frame_duration = img_obj.info['duration'] # returns current frame duration in milli sec. tot_duration += frame_duration # now move to the next frame of the gif img_obj.seek(img_obj.tell() + 1) # image.tell() = current frame except EOFError: return tot_duration # this will return the tot_duration of the gif if __name__ == '__main__': filepath = input('Enter the file path for the gif:') if os.path.exists(filepath): img = Image.open(filepath) gif_duration = find_duration(img) print(f'Duration of {os.path.basename(filepath)} is {gif_duration/1000} s') # divide by 1000 to convert to seconds else: print('Invalid path entered!')
and the output for this is:
This is how we can find the duration of GIF image in Python.
Also read:
Leave a Reply