@IBAction func SaveImage(_ sender: Any) { if resuleImage.image != nil { let savePanel = NSSavePanel.init() savePanel.allowedFileTypes = [(captureFilePath?.pathExtension)!] savePanel.message = "Choose the path to save the image" savePanel.isExtensionHidden = false savePanel.directoryURL = captureFilePath?.deletingLastPathComponent() savePanel.begin(completionHandler: { (result) in if result == NSFileHandlingPanelOKButton{ let bMImg = NSBitmapImageRep(data: (self.resuleImage?.image?.tiffRepresentation)!) let type = self.captureFilePath?.pathExtension == "jpg" ? NSBitmapImageFileType.JPEG : NSBitmapImageFileType.PNG let dataToSave = bMImg?.representation(using: type, properties: [NSImageCompressionFactor : 1]) do{ try dataToSave?.write(to: savePanel.url!) }catch { debugPrint("save file error") } } }) } }