将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... } }