NSImage to NSData as PNG Swift

前端 未结 1 1461
小蘑菇
小蘑菇 2020-12-10 02:42

I am writing a Mac app based on an iOS app. The code below converts a UIImage to NSData to upload to Parse.com.

I would like to do the same for Mac but I do not seem

相关标签:
1条回答
  • 2020-12-10 03:02

    You can use the NSImage property TIFFRepresentation to convert your NSImage to NSData:

    let imageData = yourImage.TIFFRepresentation
    

    If you need to save your image data to a PNG file you can use NSBitmapImageRep(data:) and representationUsingType to create an extension to help you convert Data to PNG format:

    Update: 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 }
    }
    

    usage

    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)
        }
    }
    
    0 讨论(0)
提交回复
热议问题