保存在 iOS 绘画应用程序中

Posted

技术标签:

【中文标题】保存在 iOS 绘画应用程序中【英文标题】:Saving in iOS paint app 【发布时间】:2012-06-24 17:24:26 【问题描述】:

我在 ios 应用中保存笔画时遇到了一些麻烦。我已经使用 NSUserDefaults 在我的应用程序中成功保存了文本,但我不确定保存图像的工作方式是否相同,无论如何,这就是我所拥有的:

-(IBAction)saveImage:(id)sender

    UIImage *saveImage = drawImage.image;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:saveImage forKey:@"image"];
    [defaults synchronize];

每当我点击应用程序中的保存按钮 (saveImage) 时,Xcode 的输出都会显示 -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<UIImage: 0x1f076ee0>' of class 'UIImage'

我不确定这意味着什么。 任何帮助将不胜感激,因为我是 Xcode 和 Objective-C 的新手。谢谢你的帮助, -卡尔。

【问题讨论】:

我不认为您真的想将图像保存在用户默认值中。您可能想将其保存在文档文件夹中。 【参考方案1】:

您正在尝试将UIImage 保存为NSUserDefaults 中的值。您需要做的是将UIImage 转换为NSData 并保存。

-(IBAction)saveImage:(id)sender

    UIImage *saveImage = drawImage.image;

    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(saveImage)];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:imageData forKey:@"image"];
    [defaults synchronize];

【讨论】:

【参考方案2】:

NSUserDefault 无法直接保存UIImage,但您可以将它们保存为NSData。为此先转换图像,然后保存

  NSData *imageData = UIImagePNGRepresentation(drawImage.image);
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  [defaults setObject:imageData forKey:@"imageData"];
  [defaults synchronize];

为了将 NSData 转换回 UIImage,请使用 imageWithData:例如

 UIImage *myImage = [UIImage imageWithData:imageData];

【讨论】:

以上是关于保存在 iOS 绘画应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

如何保存我的绘图? (基本绘画应用程序)

mfc做的一个程序,如何将绘画的矩形、圆形保存到位图?保存成.bmp格式?

在 iOS / iPad 上编写绘画应用程序的最佳方法

如何在图像上绘画并将该图像保存到 Android 中?

处理绘图/绘画/保存多个位图

Canvas 绘画