作为PNG Swift的NSSI的NSI映像

时间:2015-03-25 17:34:54

标签: parse-platform uiimage nsdata nsimage uiimagepngrepresentation

我正在编写基于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)

1 个答案:

答案 0 :(得分:26)

您可以使用NSImage属性TIFFRepresentationNSImage转换为NSData

let myImageData = yourImage.TIFFRepresentation!

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

更新: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
        }

    }
}

<强>使用

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")
}