在我的iOS应用程序中,我想在我的tableViewCell
中显示一个Gif图像。通过SDWebImage
下载此Gif图像,并使用FLAnimatedImageView
来显示此图像。
但现在我有一个问题,SDWebImage
返回图像,但FLAnimatedImageView
想要一个NSData
。
如何将gif
转换成NSData
图像?
原谅我可怜的英语。
[[SDWebImageManager sharedManager] downloadImageWithURL:url options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
if (image.images.count > 0)//gif
{
// how to get the data
FLAnimatedImage *animatedImage = [FLAnimatedImage animatedImageWithGIFData:data];
_chatGIFImage.animatedImage = animatedImage1;
}
}];
如果您有图像的URL,则可以直接使用以下内容将其转换为NSData
NSData *data = [NSData dataWithContentsOfURL: imageURL];
你可以简单地使用
// UIImageJPEGRepresentation(<#UIImage * _Nonnull image#>, <#CGFloat compressionQuality#>)
NSData *data = UIImageJPEGRepresentation(image, 1.0);
压缩质量可以在0.0(高压缩,低质量)和1.0(低压缩,高质量)之间
您可以执行以下操作:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSError* error = nil;
NSData* ImageData = [NSData dataWithContentsOfURL:yourIMGUrl options:NSDataReadingUncached error:&error];
if (error) {
NSLog(@"%@", [error localizedDescription]);
} else {
NSLog(@"successfull.");
dispatch_sync(dispatch_get_main_queue(), ^{
FLAnimatedImage *animatedImage = [FLAnimatedImage animatedImageWithGIFData:ImageData];
_chatGIFImage.animatedImage = animatedImage1;
});
}
});