Как получить URL-адрес изображения, взятого из UIImagePicker

Я пытаюсь выяснить, как получить URL-адрес актива изображения, сохраненного в фотопленке, но я не могу найти многого, что могло бы мне помочь. Я видел примеры Objective-C, но у меня нет опыта работы с ним, и во многих случаях они используют ALAssetLibrary, которая сейчас устарела. Все, что я делаю, это сохраняю фотографию, но мне нужно получить URL-адрес, чтобы загрузить ее в другое изображение, UIImageView которого не всегда существует. Попытка загрузить его в представление приводит к сбою приложения.

Код:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject]) {
    imagePicker.dismissViewControllerAnimated(true, completion: nil)
    imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    UIImageWriteToSavedPhotosAlbum((info[UIImagePickerControllerOriginalImage] as? UIImage)!, nil, nil, nil)
    if let detail = self.detailItem {
        print(info.values)
        // ### Where I need to have the image URL ###
        //detail.thumbnail = info[UIImagePickerControllerReferenceURL] as! String
    }
}

person Carl Litchman    schedule 27.12.2015    source источник


Ответы (1)


Из документов Apple: The Assets Library framework is deprecated as of iOS 9.0. Instead, use the Photos framework instead, which in iOS 8.0 and later provides more features and better performance for working with a user’s photo library.

Таким образом, iOS8 и более поздние версии используют Photos API и placeholderForCreatedAsset из PHAssetChangeRequest

    PHPhotoLibrary.sharedPhotoLibrary().performChanges({
    let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(info[UIImagePickerControllerOriginalImage])
    let assetPlaceholder = assetRequest.placeholderForCreatedAsset
}, completionHandler: { success, error in
    // completion handling
})

// I have not tested but this should work

Используйте ниже для более старых iOS:

func writeImageToSavedPhotosAlbum(_ imageRef: CGImage!,
                         metadata metadata: [NSObject : AnyObject]!,
                  completionBlock completionBlock: ALAssetsLibraryWriteImageCompletionBlock!)
person san    schedule 28.12.2015