保存Mutable数组图像并加载它们

时间:2013-11-27 08:24:31

标签: ios iphone objective-c uiimage nsmutablearray

我的应用程序的一部分将拍摄照片并且该人可以选择保存它然后将图像保存到阵列但是我可以将其保存到手机的方式而不将其放入照片库中。我试过了

UIImage *image = imageView1.image;

[array addObject: image];

NSUserDefaults *default = [NSUserDefault standardDefaults];
[defaults setObject:image withKey:@"saved image"]; //not exact code just showing the method 

我用来保存图像数组

[defaults synchronize];

然后我也使用UserDefaults加载数组,但它不起作用。我想知道是否有不同的方法来保存图像而不将它们保存到照片库。

3 个答案:

答案 0 :(得分:2)

原则上,您可以使用

将图像保存在NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image) 
                                          forKey:key];

但请记住,NSUserDefaults用于存储偏好,而不是图像。您最好将图像保存在文档文件夹中,并将路径存储在NSUserDefaults中(如Wain所示)。

答案 1 :(得分:0)

您无法以您想要的方式保存图像。在您的情况下,数组只包含指向图像的指针,而不包含图像本身。因此,正如@Wain所建议的那样,一种方法是将图像写入磁盘,并将保存图像的路径添加到数组中,然后将该数组保存到NSUserDefaults。您可以将图像转换为NSData,并将其写入应用程序沙箱的Documentstmp文件夹中,从而将图像保存到磁盘。要将图片转换为NSData,您可以使用UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality)方法,并且为了将数据写入磁盘,请使用writeToFile:atomically的{​​{1}}方法。

祝你好运!

答案 2 :(得分:0)

您可以将它们保存到Document目录中:

NSData *imageData = UIImagePNGRepresentation(imageView1.image);
NSString *imagePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"/imageName.png"];
[imageData writeToFile:imagePath atomically:YES];

并将其网址保存在NSUserDefaults中:

NSUserDefaults *default = [NSUserDefault standardDefaults];
[defaults setObject:imagePath  withKey:@"saved image "];
[defaults synchronize];

只需检索图片:

UIImage *customImage = [UIImage imageWithContentsOfFile:imagePath];