60

我正在尝试从 加载UIImage对象NSData,而示例代码是 to NSImage,我想它们应该是相同的。但是刚刚加载图像,我想知道解决UIImage加载NSData问题的最佳方法是什么。

4

5 回答 5

106

我以前没有尝试UIImageJPEGRepresentation()过,但UIImagePNGRepresentation对我来说效果很好,并且在NSDataand之间进行转换UIImage非常简单:

NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
于 2011-03-10T15:59:39.840 回答
44

UIImage 有一个 -initWithData:方法。来自文档:“数据参数中的数据必须经过格式化以匹配系统支持的图像类型之一的文件格式。”

于 2008-11-02T22:04:09.880 回答
21

试试这个将图像转换为 NSdata:

UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
于 2011-08-10T13:13:30.747 回答
3

theData 应该是一个NSData已经包含数据的对象。您需要在NSData使用之前将文件加载/下载到对象。您可以使用NSLogon theData 来检查它,看看它是否包含有效数据。

于 2008-11-03T08:25:30.390 回答
-1

为了安全地执行代码,使用带有数据的 if-let 块,作为 UIImagePNGRepresentation 函数返回的可选值。

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

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

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

if let img = UIImage(named: "Hello.png") {
        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: "Hello.png") {
      if let data = img.pngRepresentationData {
              handleOperationWithData(data: data)     
      } else if let data = jpegRepresentationData {
              handleOperationWithData(data: data)     
     }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
     if let image = UIImage(data: data) {
        // Use image...
     }
}
于 2017-09-06T10:44:22.150 回答