将UIImage转换为NSData BUT保留为GIF文件

时间:2011-09-14 17:09:26

标签: iphone objective-c ios cocoa-touch nsdata

我有一个UIImage,它是一个GIF文件。

我需要让它成为一个NSData对象。 但它需要保留一个GIF,所以我不能使用UIImageJPEGRepresentation。

有什么想法吗?

3 个答案:

答案 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"];

NSData dataWithContentsOfFile docs