我有一个UIImage,它是一个GIF文件。
我需要让它成为一个NSData对象。 但它需要保留一个GIF,所以我不能使用UIImageJPEGRepresentation。
有什么想法吗?
答案 0 :(得分:12)
一旦它成为UIImage,它就不再是gif了。它已被解释为核心图形图像对象,包裹在UIImage的UIKit装饰中。你没有“是GIF”的UIImage。可能只有一次,但那段时间过去了。
如果您正在下载此内容(我通过您的评论假设“我无法访问该文件”),那么您应该将其作为数据下载,并将其保存为数据,如果您创建了UIImage根据这些数据,您可能需要保留数据。
(这是一个猜测,但是,因为你正在通过滴水运送滴水问题的详细信息。如果你能更大声地说出你想要完成的事情,我们可能会帮助更好。)
答案 1 :(得分:8)
我遇到了你提到的同一个问题,这里是我用来将动画gif保存到照片而不会丢失动画的代码:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSData *data = [NSData dataWithContentsOfURL:[self getCurrentGIFURL]];
[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {}
基本上,如果您将gif从URL或文件直接保存为NSData
对象而不是将其设为UIImage
,它将保留动画。
答案 2 :(得分:2)
如果您知道文件路径,可以直接将其加载到NSData *中。如:
NSData *gifData = [NSData dataWithContentsOfFile:@"myCoolPic.gif"];