当前位置: 首页 > 面试题库 >

从IOS上的UIView将图像保存到应用程序文档文件夹

越伟泽
2023-03-14
问题内容

我有一个UIImageView,它允许用户放置并保存图像,直到可以保存为止。问题是,我不知道如何实际保存和检索放置在视图中的图像。

我已经将图像检索并放置在UIImageView中,如下所示:

//Get Image 
- (void) getPicture:(id)sender {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = (sender == myPic) ? UIImagePickerControllerSourceTypeCamera : UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    [self presentModalViewController:picker animated:YES];
    [picker release];
}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage (UIImage *)image editingInfo:(NSDictionary *)editingInfo {
    myPic.image = image;
    [picker dismissModalViewControllerAnimated:YES];
}

它在我的UIImageView中显示选定的图像就很好了,但是我不知道如何保存它。我将视图的所有其他部分(主要是UITextfield)保存在Core
Data中。我已经搜索了很多,然后尝试了很多人建议的代码,但是要么我没有正确输入代码,要么这些建议与我的代码设置方式不符。可能是前者。我想使用与将文本保存在UITextFields中相同的操作(保存按钮)将图像保存在UIImageView中。这是我保存UITextField信息的方式:

// Handle Save Button
- (void)save {

    // Get Info From UI
    [self.referringObject setValue:self.myInfo.text forKey:@"myInfo"];

就像我之前说过的那样,我尝试了几种方法来使它起作用,但无法掌握它。我一生中第一次想对无生命的物体造成身体伤害,但我设法克制了自己。

我希望能够将用户放置的图像保存到应用程序的documents文件夹中的UIImageView中,然后能够将其检索并将其放置在另一个UIImageView中,以便在用户将该视图推入堆栈时显示。任何帮助是极大的赞赏!


问题答案:

很好,伙计。不要伤害自己或他人。

您可能不希望将这些图像存储在Core Data中,因为如果数据集太大,这会影响性能。最好将图像写入文件。

NSData *pngData = UIImagePNGRepresentation(image);

这会提取您捕获的图像的PNG数据。从这里,您可以将其写入文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; //Add the file name
[pngData writeToFile:filePath atomically:YES]; //Write the file

以后阅读它的方式相同。像上面一样构建路径,然后:

NSData *pngData = [NSData dataWithContentsOfFile:filePath];
UIImage *image = [UIImage imageWithData:pngData];

您可能想要做的是创建一个为您创建路径字符串的方法,因为您不希望该代码随处可见。它可能看起来像这样:

- (NSString *)documentsPathForFileName:(NSString *)name
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
    NSString *documentsPath = [paths objectAtIndex:0];

    return [documentsPath stringByAppendingPathComponent:name]; 
}

希望对您有所帮助。



 类似资料:
  • 问题内容: 我刚刚在我的应用程序中创建了PDF文档,并且希望通过“文件”应用程序可以访问保存的文档的方式将文档保存在设备上。 当您在Safari中下载PDF文档时,可以选择将文档保存到“文件”应用中。 我用Google搜索了几个小时,但找不到任何有用的方法。 问题答案: 如果您有权访问,则可以向用户显示,然后将其保存到,或与其他任何可用选项共享该用户:

  • 问题内容: Go的新手(我正在研究的第一个简单项目)。 问题:如何从URL获取图像,然后将其保存到计算机中? 这是我到目前为止的内容: 但是,当我运行此代码时,我得到 我假设我必须将image.Image(变量)转换为未定义的字节数?那是解决这个问题的正确方法吗? 问题答案: 无需解码文件。只需将响应正文复制到您打开的文件中即可。这是修改后的示例中的交易: 是数据流,并实现了接口-意味着您可以按顺

  • 我正在尝试将一个图像文件从html页面上传到azure blob存储。到目前为止,我已经编写了一个web服务来为我的blob容器创建SAS。由此,我创建了一个uri,格式为“blob地址”/“容器名称”/“blob名称”?“sas”。我的html页面上有一个上传控件。 然后,我尝试使用以下代码上传该文件: 其中blobPath是上面提到的uri,upFile是我的html上传控件。 当我试图上传文

  • 想要改进此问题?通过编辑这篇文章来更新问题,以便可以用事实和引用来回答它。 在我的Web应用程序中,我希望允许“客户端用户”上传大量图像文件,并且“客户端用户”必须能够看到上传图像文件的网格。 在这种情况下,所有图像文件都有权进行上传、读取、删除和编辑操作。 基本上我使用的是java技术,但我有疑问, < li >管理这种大型图像文件最安全、最有效的方法是什么? < li >在这种web应用程序中

  • 问题内容: 我正在学习OpenCV和Python。我从网络摄像头捕获了一些图像并将其保存。但是默认情况下会将它们保存到本地文件夹中。我想将它们从直接路径保存到另一个文件夹。我如何解决它? 问题答案: ebeneditos提供的解决方案运行完美。 但是,如果您在一段较大的代码段中有多个部分,并且想要更改保存图像的路径,则必须在每次单独出现时更改路径。 正如Soltius所说,这是一种更好的方法。声明

  • 问题内容: 我在SQL Server 2000中有一个带有图像列的表。我需要将图像数据保存到文件系统上的文件中。在SQL Server 2005中,我可以将ADODB.Stream对象用于文件I / O,但在SQL Server 2000中似乎不存在。我能找到的最接近的东西是Scripting.FileSystemObject,但它似乎仅支持文本文件。这对我不起作用(我不认为)。 问题答案: AD