如何从gif文件中获取每秒帧数?

Leg*_*nus 7 iphone frame-rate image objective-c animated-gif

我试图从gif文件获取每秒帧数,我正在将gif文件转换为NSData,然后从NSData我使用此代码获取一个帧数组: - (NSMutableArray*)getGifFrames:(NSData*)数据{

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;
Run Code Online (Sandbox Code Playgroud)

}

无论如何我能得到GIF的FPS吗?谢谢

Ant*_*ake 11

GIF文件不包含FPS值,而是每个帧包含持续时间.

每个帧都包含一个标题.

十六进制字节数324包含以百分之一秒为单位的帧持续时间,例如09 00将是0.09秒.

编辑:参考http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_GIF

  • 这是否意味着GIF实际上具有可变的帧速率? (2认同)