【问题标题】:Convert a UIImage into NSData BUT stay as a GIF file将 UIImage 转换为 NSData 但保留为 GIF 文件
【发布时间】:2016-12-02 07:44:34
【问题描述】:

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

我需要把它变成一个 NSData 对象。 但它需要保持 GIF,所以我不能使用 UIImageJPEGRepresentation。

有什么想法吗?

【问题讨论】:

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


【解决方案1】:

一旦它是 UIImage,它就不再是 gif。它已经被解释为一个核心图形图像对象,包裹在 UIImage 的 UIKit 修剪中。您没有“是 GIF”的 UIImage。可能曾经有过一次,但那段时间已经过去了。

如果您正在下载这个东西(我假设您的评论“我无权访问该文件”),那么您应该将其作为数据下载,并将其作为数据保存,如果您制作了 UIImage根据该数据,您可能需要保留这些数据。

(不过,这全是猜测,因为您正在逐点滴漏有关您的问题的细节。如果您能大声说出您想要完成的事情,我们可能会提供更好的帮助。)

【讨论】:

  • 在这里寻找其他东西,但这正好回答了我的问题。谢谢
【解决方案2】:

我遇到了你提到的同样的问题,这是我用来将动画 gif 保存到照片而不丢失动画的代码:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

NSData *data = [NSData dataWithContentsOfURL:[self getCurrentGIFURL]];

[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {}

基本上,如果您将来自 URL 或文件的 gif 直接保存为 NSData 对象而不是使其成为 UIImage,它将保留动画。

【讨论】:

  • 你能提供快速版本吗?
【解决方案3】:

如果您知道文件路径,则可以直接将其加载到 NSData* 中。如:

NSData *gifData = [NSData dataWithContentsOfFile:@"myCoolPic.gif"];

NSData dataWithContentsOfFile docs

【讨论】:

  • 这是真的,但可悲的是,这并不容易......我无权访问该文件。
  • 那么你是怎么得到图像的呢?
  • 嗯?无法访问该文件绝对会阻止您将其加载到 NSData 中……除了查看、使用、操作它以及用它做任何事情。
  • 我将其作为 NSData 提供,但它是直接来自 AVCapture 而不是来自文件
  • 我不得不使用它从文件中获取数据:NSString* gifPath = [[NSBundle mainBundle] pathForResource:@"ajax-loader" ofType:@"gif"]; 并将这个字符串提供给上面的函数。
猜你喜欢
  • 2015-07-01
  • 2011-09-22
  • 2017-03-30
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 2016-07-10
相关资源
最近更新 更多