在 iOS Swift 中从设备获取图像的 URL 路径

Posted

技术标签:

【中文标题】在 iOS Swift 中从设备获取图像的 URL 路径【英文标题】:Getting the URL Path of an Image from device in iOS Swift 【发布时间】:2019-04-22 05:30:23 【问题描述】:

我正在尝试在实际设备而不是模拟器上使用PHImageManager 获取图像路径。 我正在使用photoUrl = info!["PHImageFileURLKey"] as? URL 获取网址。

现在,当我在模拟器上运行代码时,我的 info 中有 9 个键/值对。但是当我在实际设备上运行相同的代码时,我只得到 3 个键/值对,因此我没有得到 photoUrl,我的应用程序崩溃了

这是我一直在尝试实现的代码,


var selectedPhotos : [URL] = []

 func pickerViewController(_ pickerViewController: TatsiPickerViewController, didPickAssets assets: [PHAsset])
    

            self.selectedPhotos.removeAll()
            let imageManager = PHImageManager.default()
            let options = PHImageRequestOptions()
            options.deliveryMode = .highQualityFormat
            options.resizeMode = .exact
            options.isSynchronous = true

            let count = assets.count
            for asset : PHAsset in assets
            
                let imageSize = CGSize(width: asset.pixelWidth,
                                       height: asset.pixelHeight)
                /* For faster performance, and maybe degraded image */
                imageManager.requestImage(for: asset,
                                          targetSize: imageSize,
                                          contentMode: .aspectFill,
                                          options: options,
                                          resultHandler:
                    
                                            (image, info) -> Void in
                         var photoUrl : URL!
                         photoUrl = info!["PHImageFileURLKey"] as? URL
                         self.selectedPhotos.append(photoUrl)
                    )
            

【问题讨论】:

【参考方案1】:

使用asset.requestContentEditingInput insted of asset.requestImagebelowPHAsset 检索图像URL

func pickerViewController(_ pickerViewController: TatsiPickerViewController, didPickAssets assets: [PHAsset])

    let count = assets.count
    for asset : PHAsset in assets            
        asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions())  (eidtingInput, info) in
            if let input = eidtingInput, let photoUrl = input.fullSizeImageURL 
                self.selectedPhotos.append(photoUrl)
            
        
    

【讨论】:

很高兴听到。编码愉快。 我可以使用这些选定的照片(URL)进行上传吗? 是的,你可以使用它

以上是关于在 iOS Swift 中从设备获取图像的 URL 路径的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中从 Plist 加载 Url 图像

在幻灯片 iOS APP 中从 URL Xcode 9 加载图像

在 Swift 2.0 中从 iOS 应用程序上传图像到服务器

如何在swift中从UIImage获取图像扩展/格式

在swift中从本地获取图像

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