2016-11-12 2 views
0
- (IBAction)chooseImgBtnClick:(id)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    [self presentViewController:picker animated:YES completion:NULL]; 
} 


-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 
    _image=[info objectForKey:UIImagePickerControllerOriginalImage]; 
    [_vehicleImageView setImage:_image]; 
    [self dismissViewControllerAnimated:YES completion:NULL];_vehicleImageView.image= [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    NSData *webData = UIImagePNGRepresentation(_vehicleImageView.image); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"png"]; 
    [webData writeToFile:localFilePath atomically:YES]; 
    NSLog(@"localFilePath.%@",localFilePath); 
    _filePath=localFilePath; 
} 

Используя приведенный выше код я выбираю фотографию из библиотеки и настройки фото в UIImageView и попытался взять путь в строку под названием localFilePath. Я назначил путь к _filepath.Загрузка изображения в ImageView, взяв изображение из FilePath

Теперь я написал функцию, чтобы взять изображение из пути к файлу и загрузить изображение в другой UIImageView при нажатии другой кнопки. Но изображение не загружается. Пожалуйста, сообщите

Ниже приведена функция.

- (IBAction)loadSecondView:(id)sender { 
    NSData *pngData = [NSData dataWithContentsOfFile:_filePath]; 
    UIImage *image = [UIImage imageWithData:pngData]; 
    [_secondImageView setImage:image]; 

} 
+0

Доступно только три типа источников, и одна из них - камера. Если вы не хотите, чтобы кадр камеры (sourceType == savedPhotosAlbum), вам нелегко узнать, что вы ищете, без более подробного примера. «Любой каталог» на iOSdevice либо неоднозначен (вы имеете в виду iCloud или какое-то другое место «off-device»?), Либо нет (устройства iOS не имеют концепции каталогов). Пожалуйста, дайте более подробную информацию .... – dfd

+0

Я согласен с @dfd. Пожалуйста, прочитайте ответ здесь: - http://stackoverflow.com/a/1082265/4525734 Кроме того, это ссылка на Apple, Документация: https://developer.apple.com/reference/uikit/uiimagepickercontrollersourcetype –

+0

Невозможно выбрать изображения из папки «Документы» или «Любая папка, созданная в проекте с несколькими изображениями»? – Harish

ответ

0

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

-(UIImage*) getImage:(NSString *) imageName{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent: 
         imageName ]; 
    UIImage* image = [UIImage imageWithContentsOfFile:path]; 
    NSLog(@"%@",image); 
    return image; 

} 
0

IOS, при получении ближе к тому, пользователи думают «файлы» и «каталоги», не в полной мере включить эту функцию. Думаю, в конце концов у вас есть несколько вариантов в вашем распоряжении. Я перечислю их в порядке убывания tenability:

  • (1) Использование ОС «как есть» - камера, Фотопленка, Фото библиотеки. Это, скорее всего, потребует некоторого рефакторинга того, что вы делаете, но это также «способ iOS».

  • (2) Работайте с iCloud Drive and the Document Picker. Эта ссылка связана с разъяснением высокого уровня. Используя это, вы получаете больше «пути Apple», но теперь вы запрещаете пользователю хранить вещи в iCloud.

  • (3) Используйте расширение приложения, которое называется Document Provider. Я никогда не использовал это (пока), но я считаю, что это еще больше расширит ситуацию в «облаке» и даст вам возможность читать/писать в Dropbox и т. Д. Одно слово предостережения: я использовал Редактирование фотографий расширение в приложении, и есть немало «gotchas», с которыми вам приходится мириться. Расширения более ограничены с точки зрения пользовательского интерфейса, чем приложения.

  • (4) Я не знаю, будет ли это работать, но если вы действительно застряли, возможно, вы можете использовать некоторую форму «глубокой привязки», чтобы ваше приложение было стандартным приложением для открытия определенных изображений. Это длинный снимок, хотя - я действительно не думаю, что это сработает.

Смежные вопросы