【问题标题】:How can I get the number of frames per second from a gif file?如何从 gif 文件中获取每秒的帧数?
【发布时间】:2012-03-24 20:48:18
【问题描述】:

我正在尝试从 gif 文件中获取每秒的帧数。 我正在将 gif 文件转换为 NSData,然后从该 NSData 我使用以下代码获取一组帧:

-(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;
}

无论如何我可以得到 gif 的 FPS 吗?

【问题讨论】:

    标签: iphone objective-c image animated-gif frame-rate


    【解决方案1】:

    GIF 格式指定每帧的渲染持续时间(延迟),以毫秒为单位。每帧可以有不同的持续时间,这使得无法计算整体 FPS。

    【讨论】:

      【解决方案2】:

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

      每一帧都包含一个标题。

      Hex Byte Number 324 包含以 100 秒为单位的帧持续时间,例如 09 00 为 0.09 秒。

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

      【讨论】:

      • 这是否意味着 GIF 实际上具有可变帧速率?
      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2022-08-20
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多