代码之家  ›  专栏  ›  技术社区  ›  BlueDolphin

NSData和UIImage

  •  60
  • BlueDolphin  · 技术社区  · 17 年前

    我正在尝试加载 UIImage 对象来自 NSData ,示例代码是 NSImage ,我想它们应该是一样的。但刚才加载图像时,我想知道解决问题的最佳方法是什么 图片 附加费用 操作文件数据 问题。

    5 回复  |  直到 12 年前
        1
  •  106
  •   Ajay Kumar b123400    10 年前

    我没有试过 UIImageJPEGRepresentation() 以前,但是 UIImagePNGRepresentation 对我来说很好,转换之间 NSData UIImage 非常简单:

    NSData *imageData = UIImagePNGRepresentation(image);
    UIImage *image=[UIImage imageWithData:imageData];
    
        2
  •  44
  •   logancautrell    14 年前

    UIImage具有- initWithData: 方法。文档中:“数据参数中的数据必须格式化为与系统支持的图像类型之一的文件格式相匹配。”

        3
  •  21
  •   Mundi    14 年前

    尝试以下操作将映像转换为NSdata:

    UIImage *img = [UIImage imageNamed:@"image.png"];
    NSData *data1 = UIImagePNGRepresentation(img);
    
        4
  •  3
  •   Venk    13 年前

    数据应该是 NSData 已包含数据的对象。您需要将文件加载/下载到 操作文件数据 在使用之前。您可以使用以下工具进行检查 NSLog 在data上查看是否包含有效数据。

        5
  •  -1
  •   Krunal    8 年前

    为了安全执行代码,使用if-let-block with Data,因为函数UIImagePNGResentation返回可选值。

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

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

    通用图像操作(如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...
         }
    }