NSData to UIImage

前端 未结 5 2152
逝去的感伤
逝去的感伤 2020-11-29 08:40

I\'m trying to save a UIIMage and then retrieve it and display it. I\'ve been successful by saving an image in the bundle, retrieving it from there and displaying. My proble

5条回答
  •  爱一瞬间的悲伤
    2020-11-29 08:57

    Use if-let block with Data to prevent app crash & safe execution of code, as function UIImagePNGRepresentation returns an optional value.

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

    Note: Data is Swift 3+ class. Use Data instead of NSData with Swift 3+

    Generic image operations (like png & jpg both):

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

    By using extension:

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

提交回复
热议问题