如何在 Swift 中使用 URL 从库中获取图像? [复制]

Posted

技术标签:

【中文标题】如何在 Swift 中使用 URL 从库中获取图像? [复制]【英文标题】:How to get image from library with URL in Swift? [duplicate] 【发布时间】: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;他们有本地标识符。要获取单张照片,请使用其标识符。 【参考方案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")
                
            
            

【讨论】:

以上是关于如何在 Swift 中使用 URL 从库中获取图像? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift3中从库的PHAsset中获取图像文件名

基于 Swift 中的 creationDate 从库中获取所有照片 [更快的方式?]

在 Core Data 中从库中保存和获取多个图像选择

如何从 UIImagePickerController 获取图像文件名

android - 从库中获取资源ID

Android - 如何从相机捕获图像或从库中添加