我试图从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吗? 谢谢
答案 0 :(得分:11)
GIF文件不包含FPS值,而是每个帧都包含持续时间。
每个框架都包含一个标题。
十六进制字节编号324包含以百分之一秒为单位的帧持续时间,例如09 00将为0.09秒。
编辑:参考http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_GIF
答案 1 :(得分:1)
看一下我发现的代码--AnimatedGif类包含一个方法“GIFReadExtensions”,它似乎完全符合你的要求:
答案 2 :(得分:0)
GIF格式指定每帧的渲染持续时间(延迟),以毫秒为单位设置。每个帧的持续时间可能不同,这使得无法计算总体帧速率。