2015-03-25 19 views
13

Tôi đang viết ứng dụng Mac dựa trên ứng dụng iOS. Đoạn mã dưới đây chuyển đổi UIImage thành NSData để tải lên Parse.com.NSImage to NSData dưới dạng PNG Swift

Tôi muốn làm tương tự cho Mac nhưng dường như tôi không thể chuyển đổi nó thành NSData. Tôi nên làm gì đây?

Cảm ơn

var image = UIImage(named: "SmudgeInc") 

let imageData = UIImagePNGRepresentation(image) 

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

Trả lời

22

Bạn có thể sử dụng NSImage tài sản TIFFRepresentation để chuyển đổi NSImage của bạn để NSData như sau:

let myImageData = yourImage.TIFFRepresentation! 

Nếu bạn cần phải lưu dữ liệu hình ảnh của bạn vào một tập tin PNG bạn có thể sử dụng NSBitmapImageRep(data:)representationUsingType để tạo tiện ích giúp bạn chuyển đổi Data thành định dạng PNG như sau:

Cập nhật: 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 
     } 

    } 
} 

sử dụng

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

https://stackoverflow.com/questions/46432709/saving-nsimage -in-different-formats-local/46481947 # 46481947 –

Các vấn đề liên quan