2015-03-25 7 views
13

Ich schreibe eine Mac App, die auf einer iOS App basiert. Der folgende Code konvertiert ein UIImage in NSData, um es auf Parse.com hochzuladen.NSBeispiel zu NSData als PNG Swift

Ich möchte das gleiche für Mac tun, aber ich kann es nicht in NSData konvertieren. Was soll ich tun?

Dank

var image = UIImage(named: "SmudgeInc") 

let imageData = UIImagePNGRepresentation(image) 

let imageFile = PFFile(name:"image.png", data:imageData) 

Antwort

22

Sie können das NSImage Eigenschaft TIFFRepresentation Ihre NSImage-NSData konvertieren wie folgt:

let myImageData = yourImage.TIFFRepresentation! 

Wenn Sie Ihre Bilddaten in eine PNG-Datei speichern müssen Sie verwenden können, NSBitmapImageRep(data:) und representationUsingType, um eine Erweiterung zu erstellen, mit der Sie Data in das PNG-Format wie folgt konvertieren können:

Update: Xcode 8.2.1 • Swift 3.0.2

extension NSBitmapImageRep { 
    var png: Data? { 
     return representation(using: .png, properties: [:]) 
    } 
} 
extension Data { 
    var bitmap: NSBitmapImageRep? { 
     return NSBitmapImageRep(data: self) 
    } 
} 
extension NSImage { 
    var png: Data? { 
     return tiffRepresentation?.bitmap?.png 
    } 
    func savePNG(to url: URL) -> Bool { 
     do { 
      try png?.write(to: url) 
      return true 
     } catch { 
      print(error) 
      return false 
     } 

    } 
} 

Nutzung

let picture = NSImage(contentsOf: URL(string: "https://i.stack.imgur.com/Xs4RX.jpg")!)! 

let imageURL = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first!.appendingPathComponent("image.png") 
if picture.savePNG(to: imageURL) { 
    print("image saved as PNG") 
} 
+0

https://stackoverflow.com/questions/46432709/saving-nsimage -in-verschiedenen-Formaten-lokal/46481947 # 46481947 –