как получить количество кадров в секунду из gif-файла?

Я пытаюсь получить количество кадров в секунду из файла 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;

}

есть ли в любом случае я могу получить FPS gif? Спасибо

2 ответов


файл GIF не содержит значения FPS, а каждый кадр содержит длительность.

каждый кадр содержит заголовок.

шестнадцатеричный байт номер 324 содержит длительность кадра в 100ths секунды, например 09 00 будет 0.09 секунд.

EDIT: ссылка http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_GIF


взгляните на этот код, который я нашел-класс AnimatedGif содержит метод "GIFReadExtensions", который, похоже, делает именно то, что вы хотите:

анимированные и прозрачные GIF для iPhone стало легко!