NSImage to NSData as PNG Swift

j'écris une application Mac basée sur une application iOS. Le code ci-dessous convertit UIImage en NSData pour uploader vers Parse.com.

je voudrais faire la même chose pour Mac, mais je ne semble pas être en mesure de le convertir en NSData. Que dois-je faire?

Merci

var image = UIImage(named: "SmudgeInc")

let imageData = UIImagePNGRepresentation(image)

let imageFile = PFFile(name:"image.png", data:imageData)
13
demandé sur Leo Dabus 2015-03-25 20:34:54

1 réponses

Vous pouvez utiliser le NSImage propriété Tiffreprésentation pour convertir votre NSImageNSData comme suit:

let myImageData = yourImage.TIFFRepresentation!

Si vous avez besoin de sauvegarder vos données d'image d'un fichier PNG, vous pouvez utiliser NSBitmapImageRep(data:) et representationUsingType pour créer une extension pour vous aider à convertir Data au format PNG comme suit:

Mise À Jour: 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
        }

    }
}

utilisation

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")
}
23
répondu Leo Dabus 2017-09-29 03:50:37