2012-03-07 19 views
6

Próbuję uzyskać liczbę klatek na sekundę z pliku gif, Konwertuję plik gif na NSData, a następnie z tego NSData pobieram tablicę klatek używając tego kodu: - (NSMutableArray *) getGifFrames: (NSData *) dane {Jak mogę uzyskać liczbę klatek na sekundę z pliku 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; 

}

jest mimo to mogę dostać fps gif? Dziękujemy

Odpowiedz

10

Plik GIF nie zawiera wartości FPS, a każda klatka zawiera czas trwania.

Każda ramka zawiera nagłówek.

Hex Byte Number 324 zawiera czas trwania ramki w setnych częściach sekundy, na przykład 09 00 wynosi 0,09 sekundy.

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

+2

ma znaczyć GIF faktycznie ma zmienną liczbę klatek na sekundę? – rjstelling

+1

@rjstelling tak dokładnie – AnthonyBlake

+1

Dziękujemy za odpowiedź! – Legnus

Powiązane problemy