2012-03-07 11 views
6

Estoy tratando de obtener la cantidad de fotogramas por segundo de un archivo .gif, Estoy convirtiendo el archivo gif a NSData y de ese NSData tomo una matriz de marcos usando este código: - (NSMutableArray *) getGifFrames: (NSData *) datos {¿cómo puedo obtener la cantidad de fotogramas por segundo de un archivo 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; 

}

es hay alguna forma de conseguir el FPS del gIF? Gracias

Respuesta

10

Un archivo GIF no contiene un valor FPS, sino que cada cuadro contiene una duración.

Cada cuadro contiene un encabezado.

Hex Byte Number 324 contiene la duración del fotograma en centésimas de segundo, por ejemplo 09 00 sería 0.09 segundos.

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

+2

¿Eso significa un GIF efectivamente tiene una tasa de cuadros variable? – rjstelling

+1

@rjstelling sí exactamente – AnthonyBlake

+1

¡Gracias por su respuesta! – Legnus

Cuestiones relacionadas