Подтвердить что ты не робот

NSImage в NSData как PNG Swift

Я пишу приложение Mac на основе приложения iOS. Код ниже преобразует UIImage в NSData для загрузки на Parse.com.

Я хотел бы сделать то же самое для Mac, но я, похоже, не могу его преобразовать в NSData. Что я должен делать?

Спасибо

var image = UIImage(named: "SmudgeInc")

let imageData = UIImagePNGRepresentation(image)

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

Ответ 1

Вы можете использовать свойство NSImage TIFFRepresentation, чтобы преобразовать NSImage в 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")
}