【问题标题】:Saving and Loading UIImage from/to string从/到字符串保存和加载 UIImage
【发布时间】:2011-02-28 07:20:16
【问题描述】:

使用来自另一个问题的http://www.ifans.com/forums/showthread.php?t=132024 帖子,我允许用户输入签名。当用户完成输入签名后,我想将其保存到数据库中。我想知道是否可以将 UIImage 保存到字符串中?而且还从字符串中重新加载 UIImage?

提前致谢

【问题讨论】:

  • 为什么要将其存储为字符串?数据库不支持一些二进制数据格式吗?
  • 接受的答案不正确。您不应该尝试将 PNG 表示的二进制数据表示为字符串。应接受 namk42c 的答案,恕我直言。或者,更好的是,zoul 上面的评论是快速的(即您根本不应该将其转换为字符串,而应该将其作为 BLOB 存储在数据库中)。

标签: iphone objective-c ipad uiimage nsdata


【解决方案1】:

您应该将 UIImage 对象保存为 Base64 字符串:

  1. 使用UIImageJPEGRepresentationUIImage转换为NSData

  2. NSData转换为Base64字符串,然后将编码后的字符串保存到数据库中。

要加载图像,请反转该过程。

  1. 从保存的 Base64 编码字符串创建一个 NSData 对象。

  2. 使用[UIImage initWithData] 初始化UIImage 对象。

【讨论】:

    【解决方案2】:

    是的,您可以将其表示为NSData,然后将其转换为NSString

    NSData *imageData = UIImagePNGRepresentation(yourPNGImage);
    NSString *imageString = [[NSString alloc] initWithBytes: [imageData bytes] length:[imageData length] encoding:NSUTF8StringEncoding];
    

    如果是 jpeg 图像,您可以轻松地使用 UIImageJPEGRepresentation 而不是 UIImagePNGRepresentation

    【讨论】:

      【解决方案3】:
      NSData *data = UIImageJPEGRepresentation(Imagename, 1.0f);
      NSString *imageString = [NSString stringWithFormat:@"%@",data];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        • 2012-07-22
        • 2011-12-23
        相关资源
        最近更新 更多