2017-07-05 9 views
0

Je reçois l'URL d'une photo à l'aide requestContentEditingInput en utilisant la PHLibraryObtenir l'image d'URL locale (iOS)

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

Ce tirages en URL: file:///Users/josh/Library/Developer/CoreSimulator/Devices/EE65D986-55E7-414C-A73E-D1C96FF17004/data/Media/DCIM/100APPLE/IMG_0005.JPG.

Comment puis-je récupérer cette image? Je l'ai essayé ce qui suit, mais il ne retourne rien:

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 
} 

Répondre

0

apparemment Apple ne permettra pas au développeur d'accéder à tout et chaque photo dans la bibliothèque de photos de l'utilisateur, même après qu'ils ont accepté l'utilisation de photos. Si vous utilisez une image qui n'a pas été sélectionnée dans ImagePicker (c'est-à-dire en choisissant la dernière image dans la bibliothèque), vous devez stocker l'image dans le répertoire de document avant de pouvoir utiliser l'URL du répertoire de documents. Je suppose que cela empêche les gens de pirater dans d'autres photothèque

//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) 
    } 
}