2015-03-25 17 views
13

Sto scrivendo un'app per Mac basata su un'app per iOS. Il codice sottostante converte un UIImage in NSData per caricare su Parse.com.NSImage to NSData as PNG Swift

Mi piacerebbe fare lo stesso per Mac ma non riesco a convertirlo in NSData. Cosa dovrei fare?

Grazie

var image = UIImage(named: "SmudgeInc") 

let imageData = UIImagePNGRepresentation(image) 

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

risposta

22

È possibile utilizzare la NSImage proprietà TIFFRepresentation per convertire il vostro NSImage-NSData come segue:

let myImageData = yourImage.TIFFRepresentation! 

Se è necessario salvare i dati di immagine in un file PNG è possibile utilizzare NSBitmapImageRep(data:) e representationUsingType per creare un'estensione che aiuti a convertire Data in formato PNG come segue:

Aggiornamento: 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 
     } 

    } 
} 

utilizzo

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-diversi-formati-localmente/46481947 # 46.481.947 –