将UIImage转换为NSData并返回到UIImage

我必须从数据库填充表格单元格,图像在设备上。 我必须在imageDataObject存储该图像,如何将该UIImage转换为NSData 。 请build议,我尝试了很多解决scheme,但它不是将NSData转换回UIImage

  cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName]; UIImage *thumbnail = [self retrieveImageFromDevice:[[offlineImageListArray objectAtIndex:indexPath.row] imageName]]; NSData* data = ??????????; ImageData *imageDataObject = [[ImageData alloc] initWithImageId:[[offlineImageListArray objectAtIndex:indexPath.row]imageId] imageName:[[offlineImageListArray objectAtIndex:indexPath.row] imageName] imageData:data]; [imagesArray addObject:imageDataObject]; 

要将UIImage转换为NSData ,请使用UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)UIImagePNGRepresentation(UIImage *image)

要将NSData转换为UIImage ,请使用[UIImage imageWithData:imageData]

所以你的例子可能看起来像这样:

 cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName]; UIImage *thumbnail = [self retrieveImageFromDevice:[[offlineImageListArray objectAtIndex:indexPath.row] imageName]]; NSData* data = UIImagePNGRepresentation(thumbnail); ImageData *imageDataObject = [[ImageData alloc] initWithImageId:[[offlineImageListArray objectAtIndex:indexPath.row]imageId] imageName:[[offlineImageListArray objectAtIndex:indexPath.row] imageName] imageData:data]; [imagesArray addObject:imageDataObject]; 

参考: https : //developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.html https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIImage_Class /Reference/Reference.html

试试这个:

使用这个将UIImage转换为NSData

  NSData *imagedata = UIImagePNGRepresentation(thumbnail); 

试试这个图像数据转换回UIImage

  UIImage *image= [UIImage imageWithData:imagedata]; 

在Swift版本中:

  let imageData = UIImagePNGRepresentation(image!)! let imageFromData = UIImage(data: imageData) 

使用带数据的if-let块来防止应用程序崩溃和安全执行代码,因为函数UIImagePNGRepresentation返回一个可选值。

 if let img = UIImage(named: "TestImage.png") { if let data:Data = UIImagePNGRepresentation(img) { // Handle operations with data here... } } 

注意: 数据是Swift 3类。 Swift 3使用数据而不是NSData

通用图像操作(如png和jpg):

 if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg") if let data:Data = UIImagePNGRepresentation(img) { handleOperationWithData(data: data) } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) { handleOperationWithData(data: data) } } ******* func handleOperationWithData(data: Data) { // Handle operations with data here... if let image = UIImage(data: data) { // Use image... } } 

通过使用扩展:

 extension UIImage { var pngRepresentationData: Data? { return UIImagePNGRepresentation(img) } var jpegRepresentationData: Data? { return UIImageJPEGRepresentation(self, 1.0) } } ******* if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg") if let data = img.pngRepresentationData { handleOperationWithData(data: data) } else if let data = img.jpegRepresentationData { handleOperationWithData(data: data) } } ******* func handleOperationWithData(data: Data) { // Handle operations with data here... if let image = UIImage(data: data) { // Use image... } }