将Gif图像转换为NSData

我的相册里有一张gif图片。 当我使用UIImagePickerController选择该图像时,我需要将图像转换为NSData进行存储。

早些时候,我用过

 NSData *thumbData = UIImageJPEGRepresentation(thumbnail, 0.5); 

但它不适用于gif图像。 thumbData将为零。

  1. 如何从gif图像中获取NSData

  2. 我怎么知道这是一个需要特殊处理的gif图像?

这里的关键是将GIF文件或URL下载直接保存到NSData中,而不是将其作为UIImage。 绕过UIImage会让GIF文件保留动画。

以下是将GIF文件转换为NSData的一些代码:

 NSString *filePath = [[NSBundle mainBundle] pathForResource: @"gifFileName" ofType: @"gif"]; NSData *gifData = [NSData dataWithContentsOfFile: filePath]; 

但说实话,你应该考虑不使用GIF。

转换.GIF文件的代码可以在NSdata中转换 –

 NSString *pathForFile = [[NSBundle mainBundle] pathForResource: @"myGif" ofType: @"gif"]; NSData *dataOfGif = [NSData dataWithContentsOfFile: pathForFile]; NSLog(@"Data: %@", dataOfGif); 

https://github.com/mattt/AnimatedGIFImageSerialization

 UIImage *image = ...; NSData *data = [AnimatedGIFImageSerialization animatedGIFDataWithImage:image duration:1.0 loopCount:1 error:nil]; 

迅速

Gif 不能是资产。

 let path = Bundle.main.path(forResource: "loader", ofType: "gif")! let data = try! Data(contentsOf: URL(fileURLWithPath: path)) return data