【问题标题】:How to get image from library with URL in Swift? [duplicate]如何在 Swift 中使用 URL 从库中获取图像? [复制]
【发布时间】:2021-08-08 08:57:36
【问题描述】:

我有一个此 URL file:///var/mobile/Media/DCIM/101APPLE/IMG_1426.JPG。如何使用它从库中获取图像? 我从上次运行该应用程序时获得了该 URL。现在我想只获取这个图像而不从库中获取所有图像。 我尝试使用:

if let url = URL(string: url) {
            let imgData = NSData(contentsOf: url)
            let image = UIImage(data: imgData! as Data)
        }

但是我收到了这个错误:

Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_1426.JPG” couldn’t be opened because you don’t have permission to view it." UserInfo={NSFilePath=/var/mobile/Media/DCIM/101APPLE/IMG_1426.JPG, NSUnderlyingError=0x28200bfc0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

我从这里得到网址:

let options: PHContentEditingInputRequestOptions = PHContentEditingInputRequestOptions()
            options.canHandleAdjustmentData = {(adjustmeta: PHAdjustmentData) -> Bool in
                return true
            }
        
            self.requestContentEditingInput(with: options, completionHandler: {(contentEditingInput: PHContentEditingInput?, info: [AnyHashable : Any]) -> Void in
                if let url = contentEditingInput?.fullSizeImageURL {
                    //this
                }

            })

我不想将那张照片保存在我的应用文档中,我该如何实现?或者至少我如何打开显示该图像的照片应用程序? 谢谢。

【问题讨论】:

  • 您不应该随意访问任何文件。征得用户同意。
  • 我已授予我的应用访问照片库和相机的权限
  • 图片库中没有图片;有资产。而且他们没有文件 URL;他们有本地标识符。要获取单张照片,请使用其标识符。

标签: swift phasset


【解决方案1】:

您已授予您应用程序访问照片库和相机的权限,但您正在尝试 读取文件。那是不同的。我使用这些权限成功测试了以下代码:

<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>


            if let url = URL(string: "file:///private/var/mobile/workingdog.png") {
                do {
                    let imgData = try Data(contentsOf: url)
                    if let image = UIImage(data: imgData) {
                        print("\n---> image: \(image)")
                    }
                } catch {
                   print("error")
                }
            }
            

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2021-07-18
    • 2021-01-12
    • 2012-08-05
    • 2016-05-18
    • 2017-04-29
    • 1970-01-01
    • 2020-05-11
    • 2017-03-21
    相关资源
    最近更新 更多