Как получить полный URL-адрес изображения на iOS с помощью UIImagePickerController, используя новый материал PHAsset

Как, черт возьми, получить полный URL-адрес изображения на iOS с помощью UIImagePickerController, используя новый материал PHAsset, поскольку материал ALAssetLibrary устарел?


person Thomas    schedule 25.04.2017    source источник


Ответы (1)


Мне было ужасно трудно найти ответ на этот вопрос, поэтому, чтобы помочь людям в будущем, вот мой код, который работает, чтобы получить фактический URL-адрес файла для фотографии, выбранной с помощью встроенного в iOS UIImagePickerController. Все еще немного нервничаете по поводу использования URL-адреса ALAsset для получения PHAsset, если вы знаете другой способ сделать это, то непременно поделитесь.

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL* sourceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
if (sourceURL != nil) {
    PHAsset* asset = [[PHAsset fetchAssetsWithALAssetURLs:@[sourceURL] options:nil] lastObject];

    PHContentEditingInputRequestOptions* assetOptions = [[PHContentEditingInputRequestOptions alloc] init];
    [assetOptions setNetworkAccessAllowed:false];
    [asset requestContentEditingInputWithOptions:assetOptions 
        completionHandler:^(PHContentEditingInput* contentEditingInput, NSDictionary* info) {
        NSURL* fullImageURL = contentEditingInput.fullSizeImageURL;
        printf("Hey, got the actual image URL: %s\n", [[fullImageURL absoluteString] UTF8String]);
        }];
    }

// ...finish and dismiss the UIImagePickerController
}
person Thomas    schedule 25.04.2017