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 NSImage
NSData
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