iOS - 获取UIImage所在的系统路径

需求1:从相册选择图片要获取图片的路径

代码:

如果我们得到PHAsset的对象(itemModel.asset),我们可以通过PHAsset获取到图片的路径,名称,大小。

PHImageManager.default().requestImageData(for: itemModel.asset, options: nil) { (imageData, _, orientation, info) in
    // image所在路径
    let imageUrl: String = "\(info!["PHImageFileURLKey"] as! NSURL)"        
}

 

需求2:拍照并保存到系统相册,在保存成功时获取图片的路径

代码: 

// 存放照片资源的标志符
var localId: String?

// 将拍照的照片(self.photoImg: UIImage)写入系统相册
PHPhotoLibrary.shared().performChanges({
    let result = PHAssetChangeRequest.creationRequestForAsset(from: self!.photoImg!)
    let assetPlaceholder = result.placeholderForCreatedAsset
    // 保存标志符
    self?.localId = assetPlaceholder?.localIdentifier
    
}, completionHandler: { (success, error) in
        // 写入相册完成
        DispatchQueue.main.async {
            if success != true{
                SwiftProgressHUD.shared().showText("保存失败")
                return
            }
            
            // 通过标志符获取对应的资源
            let assetResult = PHAsset.fetchAssets(
                withLocalIdentifiers: [self?.localId ?? ""], options: nil)
            let asset = assetResult[0]
            let options = PHContentEditingInputRequestOptions()
            options.canHandleAdjustmentData = {(adjustmeta: PHAdjustmentData)
                -> Bool in
                return true
            }

            //获取保存的图片路径
            asset.requestContentEditingInput(with: options, completionHandler: {
                (contentEditingInput:PHContentEditingInput?, info: [AnyHashable : Any]) in
                let urlStrArr = ["\(contentEditingInput!.fullSizeImageURL!)"]                                
            })            
        }
})

 

注:

以上获取到的都是图片文件所处的系统路径。若要进行Aliyun上传等操作,需生成App的沙盒路径,并将图片文件写入对应的沙盒路径。

 

参考链接:

Swift - 保存图片到系统相册(相机胶卷),并获取存放路径、缩略图

iOS开发中获取图片、照片的名称以及大小---PHAsset

 

你可能感兴趣的:(iOS - 获取UIImage所在的系统路径)