将UIImage转换为NSData并返回UIImage

use*_*614 9 uiimage nsdata ios

我必须从数据库中填充表格单元格,并且图像在设备上.我要存储该图像imageDataObject,如何将其转换UIImageNSData.请建议,我尝试了许多解决方案,但它不转换回该NSDataUIImage.

    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];
Run Code Online (Sandbox Code Playgroud)

Jam*_*enn 18

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

要转换NSDataUIImage,请使用[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];
Run Code Online (Sandbox Code Playgroud)

参考文献: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

  • 如果我不知道png或jpg的图像表示怎么办?如果我也使用`UIImagePNGRepresentation`作为jpg,这是一个问题吗? (3认同)

Pra*_*inh 9

试试这个:

用它来转换UIImageNSData.

  NSData *imagedata = UIImagePNGRepresentation(thumbnail);
Run Code Online (Sandbox Code Playgroud)

尝试将此图像数据转换回来 UIImage

  UIImage *image= [UIImage imageWithData:imagedata];
Run Code Online (Sandbox Code Playgroud)