How can I get the number of frames per second from a gif file?

21,871

A GIF file doesn't contain an FPS value, rather each frame contains a duration.

Each frame contains a header.

Hex Byte Number 324 contains the frame duration in 100ths of a second, for example 09 00 would be 0.09 seconds.

EDIT: reference http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_GIF

Share:
21,871
Legnus
Author by

Legnus

Updated on February 27, 2021

Comments

  • Legnus
    Legnus about 3 years

    I am trying to get the number of frames per second from a gif file. I am converting the gif file to NSData and then from that NSData I take an array of frames using this code:

    -(NSMutableArray *)getGifFrames:(NSData *)data{
        NSMutableArray *frames = nil;
        CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)data, NULL);
        if (src) {
            size_t l = CGImageSourceGetCount(src);
            frames = [NSMutableArray arrayWithCapacity:l];
            for (size_t i = 0; i < l; i++) {
                CGImageRef img = CGImageSourceCreateImageAtIndex(src, i, NULL);
                if (img) {
                    [frames addObject:[UIImage imageWithCGImage:img]];
                    CGImageRelease(img);
                }   
            }   
            CFRelease(src);
        } 
        return frames;
    }
    

    Is there anyway I can get the FPS of the gif?

  • Richard Stelling
    Richard Stelling about 12 years
    Does that mean a GIF effectively has a variable frame rate?