2012-03-07 150 views
6

我想從gif文件中獲取每秒幀數 我將gif文件轉換爲NSData,然後從該NSData中獲取使用此代碼的幀數組: - (NSMutableArray *)getGifFrames: (NSData的*)數據{我如何從gif文件獲得每秒幀數?

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? 謝謝

回答

10

GIF文件不包含FPS值,而是每個幀都包含一個持續時間。

每個幀都包含一個標題。

十六進制字節數324包含幀持續時間以百分之一秒爲單位,例如09 00將是0.09秒。

編輯:參考http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_GIF

+2

這是否意味着GIF有效地具有可變的幀速率? – rjstelling 2012-03-07 11:51:28

+1

@rjstelling確切的是 – AnthonyBlake 2012-03-07 12:10:51

+1

謝謝你的迴應! – Legnus 2012-03-07 14:21:25