Ios 将UIImage转换为NSData并返回UIImage

Ios 将UIImage转换为NSData并返回UIImage,ios,uiimage,nsdata,Ios,Uiimage,Nsdata,我必须从数据库中填充表格单元格,并且图像在设备上。 我必须将该图像存储在imageDataObject中,如何将UIImage转换为NSData。 请建议,我尝试了许多解决方案,但没有将NSData转换回UIImage cell.textLabel.text = [[offlineImageListArray objectAtIndex:indexPath.row] imageName]; UIImage *thumbnail = [self retrieveImageFromD

我必须从数据库中填充表格单元格,并且图像在设备上。 我必须将该图像存储在
imageDataObject
中,如何将
UIImage
转换为
NSData
。 请建议,我尝试了许多解决方案,但没有将
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

  NSData *imagedata = UIImagePNGRepresentation(thumbnail);
尝试将图像数据转换回
UIImage

  UIImage *image= [UIImage imageWithData:imagedata];

要将
UIImage
转换为
NSData
,请使用
uiimagejpegresentation(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];
参考资料: 在Swift版本中:

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

使用if-let阻止数据以防止应用程序崩溃和代码的安全执行,因为函数uiImagePngResentation返回可选值

if let img = UIImage(named: "TestImage.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}
注:数据为Swift 3级。使用数据而不是NSData 斯威夫特3

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

通过使用扩展名:

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

从图像转换数据:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(img)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}
let data = myImage.jpegRepresentationData
let data1 = myImage.pngRepresentationData
let image = UIImage(data: data)
根据您的图像格式,尝试使用JPEG或PNG表示法:

UIImageJPEG表示法

以JPEG格式返回指定图像的数据

UIImagePNGRE演示文稿

以PNG格式返回指定图像的数据

示例:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(img)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}
let data = myImage.jpegRepresentationData
let data1 = myImage.pngRepresentationData
let image = UIImage(data: data)
使用:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(img)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}
let data = myImage.jpegRepresentationData
let data1 = myImage.pngRepresentationData
let image = UIImage(data: data)
从数据转换图像:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(img)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}
let data = myImage.jpegRepresentationData
let data1 = myImage.pngRepresentationData
let image = UIImage(data: data)

可能的重复可能的重复如果我不知道图像表示是png还是jpg呢?如果我对jpg也使用
UIImagePNGRepresentation
会有问题吗?@János-这不会造成问题。我怎么知道UIImage是PNG?如果是JPEG呢?UIImage既不是jpg也不是png。这是一个原始位图。PNG和JPG是一种以较小格式传输图像的格式—简单、有效!谢谢