NSImage 到 NSData 为 PNG Swift

NSImage to NSData as PNG Swift

我正在基于 iOS 应用程序编写 Mac 应用程序。下面的代码将 UIImage 转换为 NSData 以上传到 Parse.com.

我想对 Mac 做同样的事情,但我似乎无法将其转换为 NSData。我应该做什么?

谢谢

var image = UIImage(named: "SmudgeInc")

let imageData = UIImagePNGRepresentation(image)

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

您可以使用 NSImage 属性 TIFFRepresentation 将您的 NSImage 转换为 NSData:

let imageData = yourImage.TIFFRepresentation

如果您需要将图像数据保存为 PNG 文件,您可以使用 NSBitmapImageRep(data:)representationUsingType 创建一个扩展来帮助您将 Data 转换为 PNG 格式:

更新:Xcode 11 • Swift 5.1

extension NSBitmapImageRep {
    var png: Data? { representation(using: .png, properties: [:]) }
}
extension Data {
    var bitmap: NSBitmapImageRep? { NSBitmapImageRep(data: self) }
}
extension NSImage {
    var png: Data? { tiffRepresentation?.bitmap?.png }
}

用法

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 let png = picture.png {
    do {
        try png.write(to: imageURL)
        print("PNG image saved")
    } catch {
        print(error)
    }
}