- (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。
现在我编写了一个函数来从文件路径中获取图像,并在单击另一个按钮时将图像加载到另一个UIImageView中。 但是图像没有被加载。请指教
以下是该功能。
- (IBAction)loadSecondView:(id)sender {
NSData *pngData = [NSData dataWithContentsOfFile:_filePath];
UIImage *image = [UIImage imageWithData:pngData];
[_secondImageView setImage:image];
}
答案 0 :(得分:0)
iOS,让更接近让用户想到&#34;文件&#34;和&#34;目录&#34;,并没有完全启用它。我想最终你有几个选择可供你使用。我将按照可维护性的降序列出它们:
(1)按原样使用操作系统&#34;&#34; - 相机,相机胶卷,照片库。这可能需要对您正在做的事情进行一些重构,但它也是&#34; iOS方式&#34;。
(2)使用iCloud Drive and the Document Picker。这个链接是一个高级别的解释。使用此功能可以获得更多的#Apple;&#34;,但您现在限制用户将内容存储在iCloud中。
(3)使用名为Document Provider的应用扩展程序。我从来没有使用过这个(但是),但我相信这会在“云”和“#34;并且让您能够读取/写入Dropbox等。提醒一句:我在应用程序中使用了照片编辑扩展程序,并且有很多&#34;陷阱&#34;你必须忍受。扩展程序在UI方面比应用程序更受限制。
(4)我不知道这是否有效,但如果你真的被卡住,也许你可以使用某种形式的&#34;深度链接&#34;让您的应用程序成为打开某些图像的默认应用程序。虽然这是一个很长的镜头 - 我真的认为它不会起作用。
答案 1 :(得分: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;
}