获取本地URL(IOS)

问题描述:

我使用requestContentEditingInput得到一个照片的URL使用PHLibrary获取本地URL(IOS)

asset.requestContentEditingInput(with: PHContentEditingInputRequestOptions()) { (input, _) in 
    let url = input?.fullSizeImageURL 
} 

此URL打印图像:file:///Users/josh/Library/Developer/CoreSimulator/Devices/EE65D986-55E7-414C-A73E-D1C96FF17004/data/Media/DCIM/100APPLE/IMG_0005.JPG

如何检索此图像?我试过以下,但它不返回任何东西:

var fileLocation = "file:///Users/josh/Library/Developer/CoreSimulator/Devices/EE65D986-55E7-414C-A73E-D1C96FF17004/data/Media/DCIM/100APPLE/IMG_0005.JPG" 
let url = URL(string: fileLocation) 
let asset = PHAsset.fetchAssets(withALAssetURLs: [url!], options: nil) 
if let result = asset.firstObject { 
    //asset.firstObject does not exist 
} 

显然苹果不会允许开发者访问任何和每一张照片的用户的照片库,他们已经接受了使用的照片即使经过。如果您正在使用未从imagePicker中选取的图像(即选择库中的最后一张图像),则必须先将图像存储在文档目录中,然后才能使用文档目录URL。我猜这可以防止人们盗用他人照片库

//Storing the image (in my case, when selecting last photo NOT via imagePicker) 

let fileManager = FileManager.default 
let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("image01.jpg") 
let imageData = UIImageJPEGRepresentation(image!, 1.0) 
fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) 


//Retrieving the image 
let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory 
let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask 
let paths    = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) 
if let dirPath = paths.first { 
    let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent("image01.jpg") 
    if let imageRetrieved = UIImage(contentsOfFile: imageURL.path) { 
     //do whatever you want with this image 
     print(imageRetrieved) 
    } 
}