2017-10-07 5 views
0

Ich verwende UIImagePickerController, um Bild auszuwählen, ich will Pfad des ausgewählten Bildes, aber ich kann es nicht bekommen.Kein Bildpfad

, was ich in Code versuchen:

func handleImg() { 
    let picker = UIImagePickerController() 
    picker.delegate = self 
    picker.allowsEditing = true 
    present(picker, animated: true, completion: nil) 
} 
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    var selectedImageFromPicer : UIImage? 
    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage { 
     selectedImageFromPicer = editedImage 
    } else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage { 

     selectedImageFromPicer = originalImage 
    } 

    if let selectedImage = selectedImageFromPicer { 
     img.image = selectedImage 
    } 
    if let imageURL = info[UIImagePickerControllerReferenceURL] as? URL { 

     let result = PHAsset.fetchAssets(withALAssetURLs: [imageURL], options: nil) 
     let asset = result.firstObject 
     var imgStr = asset?.value(forKey: "filename") 
     print(imgStr!) 
    } 
    dismiss(animated: true, completion: nil) 
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
     print("canceled picker") 
     dismiss(animated: true, completion: nil) 
    } 
} 

von oben Code kann ich nur den Namen des Bildes erhalten. Ich möchte den Weg des Bildes.

Antwort

1

Wenn Sie das Objekt info drucken, sehen Sie alle verfügbaren Tasten für den Zugriff auf die Werte dieses Wörterbuchs. Der Bildpfad Schlüssel ist UIImagePickerControllerImageURL

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    guard let imageUrl = info["UIImagePickerControllerImageURL"] as? URL else { 
     return 
    } 
    print(imageUrl.path) // prints the path 
    picker.dismiss(animated: true, completion: nil) 
} 
0

folgenden Code kann Ihnen helfen, in den Bildpfad zu bekommen.

Code zum Anzeigen von UIImagePickerController.

Delegiertenmethode didFinishPickingMediaWithInfo.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let imageUrl   = info[UIImagePickerControllerReferenceURL] as! NSURL 
    let imageName   = imageUrl.lastPathComponent 
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! 
    let photoURL   = NSURL(fileURLWithPath: documentDirectory) 
    let localPath   = photoURL.appendingPathComponent(imageName!) 
    //Check these values 

    self.dismiss(animated: true, completion: nil); 

} 
+0

Er braucht es von der PHAsset URL zu bekommen –

+0

Btw ist er nicht Swift mit 2 –

+0

btw didFinishPickingMediaWithInfo veraltet https://developer.apple.com/documentation/uikit/uiimagepickercontrollerdelegate/1619152-imagepickercontroller –