0

我有一个用户从相机胶卷中挑选的图像。我希望用户能够从 UI 图像视图中保存和加载图像。我现在将图像保存在单例类中,这很好,直到应用程序停止运行或设备重新启动。

我可以使用类似于用于存储文本字符串的代码来存储图像吗?我曾尝试将 .text 更改为 .image ,但不出所料,没有这样的运气(这有点遥不可及)

- (IBAction)functionsave:(id)sender {
NSString *savecontents = _function.text;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:savecontents forKey:@"savecontents1"];
[defaults synchronize];


- (IBAction)Functionload:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadstring = [defaults objectForKey:@"savecontents1"];
[_function setText:loadstring];
4

1 回答 1

1

NSString 对象适合保存字符串,而不是图像。如果您想保存图像以供以后使用,我建议您将这些图像以 PNG 格式保存到应用程序的沙箱(即文档文件夹)中:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

您可以使用以下方法保存图像:

UIImage *myImage = ...
NSData *data = UIImagePNGRepresentation(myImage);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *appDocsDirectory = [paths objectAtIndex:0];
[data writeToFile:[NSString stringWithFormat:@"%@/%@.png",  appDocsDirectory , @"myNewFile"] atomically:YES];

然后,您可以使用以下命令将图像检索到 UIImage 中:

UIImage* thumImage = [UIImage imageWithContentsOfFile:[[NSString stringWithFormat:@"%@/%@.png",  appDocsDirectory , @"myNewFile"]];

我认为使用真实文件比 NSUserDefaults 更适合内存消耗。因为您可以一次从内存中加载/卸载一个文件。

于 2012-05-04T15:32:24.300 回答