Cannot get Gif image frame count when you get NSData Gif Image received from iPhone

Unable to get Gif image frame count when you get NSData Gif Image extracted from iPhone

I am extracting a Gif image from a device and want to convert it to NSData so that I can extract Gif frames.

Now I am doing:

                CGDataProviderRef provider = CGImageGetDataProvider(largeImage.CGImage);
                NSData* gifOriginalImageData = CFBridgingRelease(CGDataProviderCopyData(provider));

                CGImageSourceRef src = CGImageSourceCreateWithDataProvider(provider, NULL);
                size_t size = CGImageSourceGetCount(src);

or
                CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)gifOriginalImageData, NULL);
                size_t size = CGImageSourceGetCount(src);

But here the "size" (the number of Gif frames) comes 0 in each case. Why?

While I load the same Gif image from the package

                NSURL *url = [[NSBundle mainBundle] URLForResource:@"crad" withExtension:@"gif"];
                NSData* gifOriginalImageData = [NSData dataWithContentsOfURL:url];
                CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)gifOriginalImageData, NULL);
                size_t size = CGImageSourceGetCount(src);

It gives the actual "size" (number of frames of Gif)

+4
source share
1 answer

try it

ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte buffer = (Byte)malloc(rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];

selection of frames from this data

+1
source

All Articles