Как я могу получить количество кадров в секунду из файла GIF? - PullRequest
6 голосов
/ 07 марта 2012

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

11 голосов
/ 07 марта 2012

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

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

Шестнадцатеричный байт номер 324 содержит длительность кадра в сотых долях секунды, например, 09 00 будет составлять 0,09 секунды.

РЕДАКТИРОВАТЬ: ссылка http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_GIF

1 голос
/ 07 марта 2012

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

Анимированные и прозрачные GIF-файлы для iPhone - это просто!

...