Как получить исходное имя файла изображения, выбранного UIImagePickerController? - PullRequest
2 голосов
/ 23 ноября 2011

Я реализовал метод делегата и могу получить доступ к выбранному UIImage, например:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *pickedImage = [info valueForKey:UIImagePickerControllerOriginalImage];

Я хочу сохранить его в каталоге, но мне нужно имя файла.Поэтому вместо того, чтобы просто выбирать случайное имя файла, имеет смысл выбрать то же имя файла, что и изображение.

Есть ли способ извлечь его из этого информационного словаря?

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Вы можете использовать значение UIImagePickerControllerReferenceURL информационного словаря вместо UIImagePickerControllerOriginalImage.Это должно дать вам URL-адрес исходного медиа-элемента.

Это вернет вам объект NSURL, который вы затем сможете использовать для создания нового имени файла.

0 голосов
/ 17 сентября 2015
  • Использовать среду библиотеки ALA Assets
  • Использовать код ниже

    
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
        [library writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL *assetURL, NSError *error )
        {
           [library assetForURL:assetURL resultBlock:^(ALAsset *asset )
           {
             ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset)
             {
                 ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation];
                 NSLog(@"reference image filename picking from camera: %@", [imageRep filename]);
             };
             ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
             [assetslibrary assetForURL:assetURL resultBlock:resultblock failureBlock:nil];
           }
           failureBlock:^(NSError *error )
           {
               NSLog(@"Error loading asset");
           }];
        }];
    
    <pre><code>imageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    
...