【问题标题】:Save Camera Photo To File Location - Swift Xcode将相机照片保存到文件位置 - Swift Xcode
【发布时间】:2021-02-04 22:33:55
【问题描述】:

在我的应用中,我允许用户使用相机拍照。当 didFinishPickingMedia 执行时,我想将照片保存到 FILE LOCATION (url...modelController.saveLocation ) 之前在应用程序中选择的用户。文件位置可能是文件目录、Dropbox 等中的文件夹。尽管我在网上努力阅读,但我似乎无法弄清楚如何做到这一点。其他教程似乎正在拍摄 assets 文件夹中的照片并将其保存在某处,而不是刚刚拍摄的照片。

我试过这段代码,但它不起作用。由于某些错误,catch 语句中的代码被调用。

let url = modelController.saveLocation[0].appendingPathComponent("\(saveLocationName.description).jpg")
        if let data = image.jpegData(compressionQuality: 1.00) {
            do {
                try data.write(to: url)
            } catch {
                print("Unable to write image data to disk")
                selectNewFileLocation()
            }
            
        }

请用代码解释你的答案。这可能是一个非常简单的解决方案,但我是一个菜鸟。提前感谢您的帮助!

【问题讨论】:

  • catch 块内,你能做到print("Unable to write image data to disk: \(error)") 吗?这将打印出错误。
  • 您无法将文件保存在您想要的任何位置...有某些权限等。检查FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) 是否有效。如果是这样,问题不在于您保存的如何,而是您保存的where

标签: ios swift xcode


【解决方案1】:

已经有一段时间了,我想你已经想出了一个答案。但这是针对遇到这个问题的人。由于某些原因,在我将格式更改为 png 格式而不是 jpeg 后,它可以工作,但是在再次使用格式 jpeg 后,它可以工作也。我真的不知道为什么,因为现在我无法重现这个问题。

let url = modelController.saveLocation[0].appendingPathComponent("\(saveLocationName.description).png")
    if let data = image.pngData() {
        do {
            try data.write(to: url)
        } catch {
            print("Unable to write image data to disk")
            selectNewFileLocation()
        }
        
    }

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多