I have a UIImage which is a GIF file.
I need to make it make it into an NSData object. But it needs to stay a GIF so I can't use UIImageJPEGRepresentation.
Any ideas?
I have a UIImage which is a GIF file.
I need to make it make it into an NSData object. But it needs to stay a GIF so I can't use UIImageJPEGRepresentation.
Any ideas?
I faced the same issue you mention and here is the code i used to save the animated gif to Photos without losing animation:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSData *data = [NSData dataWithContentsOfURL:[self getCurrentGIFURL]];
[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {}
Basically, if you save the gif from URL or from file directly as an NSData
object instead of making it a UIImage
, it will keep the animation.
Once it's a UIImage, it's not a gif anymore. It's already been interpreted into a core graphics image object, wrapped in the UIKit trimmings of UIImage. You DON'T have a UIImage that "is a GIF". It may have been once, but that time has passed.
If you're downloading this thing (which I assume by your comment "I don't have access to the file"), then you should download it as data, and keep it as data, and if you make a UIImage based on that data, you maybe need to keep the data around.
(This is all a guess, though, because you're dribbling out details about your question drip by drip. If you could say in a bigger breath what you want to accomplish, we can probably help better.)
You could load it into a NSData* directly if you know the filepath. Such as:
NSData *gifData = [NSData dataWithContentsOfFile:@"myCoolPic.gif"];
NSData dataWithContentsOfFile docs