使用 NSDocumentDirectory 存储图像不起作用?

Posted

技术标签:

【中文标题】使用 NSDocumentDirectory 存储图像不起作用?【英文标题】:Storing image using NSDocumentDirectory not working? 【发布时间】:2011-09-30 09:20:43 【问题描述】:

我正在为 iPad 开发此应用程序。我的第一个屏幕将显示 2 个 UIImageView(ImageView、ImageView2)和 2 个 UIButton(确认、浏览)。

我将简要描述我的应用程序的功能。 当点击“浏览”按钮时,它会显示我 iPad 相册中的照片。选择照片后,照片库将被关闭,“ImageView”将显示所选照片。 当点击“确认”按钮时,它将使用 NSDocumentDirectory 将图像存储到我的应用程序的项目中。之后,它将检索保存的照片并将其显示在“ImageView2”上。

浏览按钮..

- (IBAction) browsePhoto:(id)sender

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
[popover setPopoverContentSize:CGSizeMake(320,320)];
[popover presentPopoverFromRect:CGRectMake(200,200,-100,-100) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popoverController = popover;
[imagePickerController  release];

在 ImageView 上显示选定的图像..

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo 

[self.popoverController dismissPopoverAnimated:YES];
imageView.image = selectedImage;

确认按钮..

- (IBAction) confirmPhoto:(id)sender


NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:@"SavedImage.png"];
UIImage *image = imageView.image;
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
imageView2.image = [UIImage imageNamed:@"SavedImage.png"];

我可以查看照片库中的照片,选择一张照片,并使“ImageView”显示所选照片。但是当我点击“确认”按钮时,“ImageView2”不显示照片。我不知道问题出在哪里。

照片还保存了吗? 还是我找回保存照片的方式不对?

【问题讨论】:

【参考方案1】:
NSString *filePath=[NSString stringWithFormat:@"%@/%@",documentsDir,@"SavedImage.png"];
imageView2.image=[UIImage imageWithContentsOfFile:filePath];

【讨论】:

【参考方案2】:

尝试加载图片:

[UIImage imageWithContentsOfFile:imageFilePath]

【讨论】:

以上是关于使用 NSDocumentDirectory 存储图像不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单元测试(OCUnit)中访问 NSDocumentDirectory

用户升级 iPhone 时是不是传输 NSDocumentDirectory 中的文件

iOS 文件检索 - NSDocumentDirectory

从 NSDocumentDirectory 延迟加载 UITableViewCells 的图像?

涉及 NSDocumentDirectory 和其他 iOS App 特定调用的静态库的单元测试

将文件加载到应用程序本地存储