작업중인 macOS 프로그램이 대화 상자를 통해 이미지를로드 한 다음 사용자에게 자르고 미리 봅니다. 이제 이미지가 원래로드 된 경로의 폴더에 다시 저장됩니다. 나는 .write(to: URL)
메서드와 NSFileManager를 통해 이미지 데이터를 저장하려고 시도했다. 어느 쪽도 일하지 않았다.경로에 NSImage 저장이 작동하지 않습니다.
출력 :
file:///Users/username/Downloads/test.png
File creation failed
코드 :
아마 인해 샌드 박스@IBAction func browseFile(_ sender: NSButton) {
let dialog = NSOpenPanel();
dialog.title = "Choose an image file";
dialog.showsResizeIndicator = true;
dialog.showsHiddenFiles = false;
dialog.canChooseDirectories = true;
dialog.canCreateDirectories = true;
dialog.allowsMultipleSelection = true;
dialog.allowedFileTypes = ["jpg","jpeg","png"];
if (dialog.runModal() == NSApplication.ModalResponse.OK) {
let result = dialog.url // Pathname of the file
if (result != nil) {
// "result" is the path of the image selected via the dialog
let corrected: NSImage = cutImage(image: NSImage(contentsOf: result!)!) // crop image
imageView.image = corrected // show cropped image preview
// save cropped image to disk
let fileName = "test"
let fileManager = FileManager.default
let fileURL = result!.deletingLastPathComponent().appendingPathComponent("\(fileName).png") // set url to the same folder as where the image was loaded from
print(fileURL)
if let pngImageData = corrected.PNGRepresentation {
//try? pngImageData.write(to: fileURL, options: .atomic)
fileManager.createFile(atPath: fileURL.path, contents: pngImageData, attributes: nil)
if fileManager.fileExists(atPath: fileURL.path) {
print("File successfully saved")
} else {
print("File creation failed")
}
}
}
} else {
// User clicked on "Cancel"
return
}
}
타깃> 앱 샌드 박스> 파일 액세스를 참조하십시오. –
이것은 효과가 있습니다! 당신의 도움을 주셔서 감사합니다 –