Iphone 如何检索保存在临时位置的图像
我有一个iOS应用程序,其中有一个视图控制器,用户可以访问其相机或库来加载图片。我正在尝试创建此文件的临时副本,以便加载到另一个视图控制器内的另一个UIImageView中。我能够保存该文件(至少在NSLog中看起来是这样,但在访问它以填充第二个viewcontroller时遇到了问题) 用户加载图像的第一视图控制器:Iphone 如何检索保存在临时位置的图像,iphone,ios,objective-c,xcode,Iphone,Ios,Objective C,Xcode,我有一个iOS应用程序,其中有一个视图控制器,用户可以访问其相机或库来加载图片。我正在尝试创建此文件的临时副本,以便加载到另一个视图控制器内的另一个UIImageView中。我能够保存该文件(至少在NSLog中看起来是这样,但在访问它以填充第二个viewcontroller时遇到了问题) 用户加载图像的第一视图控制器: -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWith
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[userImageView setImage:image];
[self dismissViewControllerAnimated:YES completion:NULL];
//Save the temp file
tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
fileURL = [[tmpDirURL URLByAppendingPathComponent:@"userPic"] URLByAppendingPathExtension:@"jpg"];
NSLog(@"fileURL: %@", [fileURL path]);
}
我的问题是,如何在第二个视图控制器的viewdidload中调用保存的文件
我一直在玩弄这样的东西,但我也犯了一些错误(我只是希望如此!)
userImageView
是我设置到图像视图的一个出口
在第一个控制器的.h文件中声明
@property (nonatomic, strong) IBOutlet NSURL *fileURL;
@property (nonatomic, strong) IBOutlet NSURL *tmpDirURL;
不能仅将NSURL指定为图像属性 它将是:
userImageView.image = [UIImage imageWithContentsOfFile:[_fileURL absoluteString]];
另外,看起来您并没有实际保存文件(除非您在其他地方这样做)。为什么不保留一个指向所拾取图像的指针,并将指针传递给另一个视图控制器
您已经有一个指向行上方UIImage的指针
image=[info objectForKey:UIImagePickerControllerOriginalImage];
如果在第二个视图控制器中创建UIImage属性(strong),并将其设置为相同的值,则仍然可以使用它。例如,如果第二个视图控制器是mySecondViewController,并且它有一个名为TheImageined
的属性,则可以执行以下操作:
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[userImageView setImage:image];
mySecondViewController.theImageINeed = image;
但是,似乎您正在显示一个视图控制器,而不是您需要该图像的视图控制器。在这种情况下,我将忽略刚才所说的内容,并为此创建一个委托方法
这意味着在显示视图的标题中,您将有如下内容:
//In the header file of the presented view
@protocol FoundMahImageDelegate <NSObject>
- (void)userSelectedAnImage:(UIImage *)image;
@end
@interface yourViewName : NSObject
//whatever else you already have
@property (nonatomic, strong) id <FoundMahImageDelegate> delegate;
@end
希望这有帮助。很容易尝试以下步骤 1.将所选图像转换为nsdata 2.创建文档目录路径 3.将图像名称追加到文档路径中 3.使用[数据写入文件:imagePath原子:是]; 写入上次创建的路径
4.然后,无论您想在何处或在何处访问文档文件夹中的图像不确定,但您可以尝试此方法
userImageView.image =[UIImage imageWithData:[NSData dataWithContentsOfURL:_fileURL]];
您从未保存该文件。您创建了URL路径,但没有写入该文件…我已经尝试过了,但是我得到了不兼容的指针类型“NSURL to NSString”,然后
userImageView.image=[UIImage imageWithContentsOfFile:[\u fileURL absoluteString]]
我更新了上面的答案以匹配。absoluteString实例方法将绝对路径作为NSString返回。你说的对,我认为我并没有实际保存图像。使用指针是什么意思?你能给我指出正确的方向吗(没有双关语)?感谢您的详细回复。我会查看它。因此您的回复帮助很大,我对此表示感谢。我正在truley尝试学习,因此您的列表帮助我这样做。我现在正在将图像保存到文档目录中(我通过进入文件验证了这一点。我还能够将其作为图像打开!进度…是的!)我现在的问题是,我找不到任何关于如何从我的文档目录访问它的明确信息。这是它的保存方式:data=uiImagePNGRepression(userImageView.image);dirpath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);docsDir=[dirpath objectAtIndex:0];databasePath=[[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent:@“userPic.png”];[data writeToFile:databasePath原子路径:是];NSString*path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];userImageView.image=[UIImage imageWithContentsOfFile:[NSString stringWithFormat:@“%@/userPic.png”,path]];其他人查看^i这是我访问该文件的方式。
//In the implementation file of the presented view
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[userImageView setImage:image];
[self.delegate userSelectedAnImage:image]; //<-- the part that changed
[self dismissViewControllerAnimated:YES completion:NULL];
@interface myMainViewController : NSObject <FoundMahImageDelegate>
//...
- (void)userSelectedAnImage:(UIImage *)image
{
//here you go, you've got the image, do something with it
}
userImageView.image =[UIImage imageWithData:[NSData dataWithContentsOfURL:_fileURL]];