如何在iPhone上将UIImage转换为JSON文件?

4

我一直使用NSJSONSerialization类将对象的字段转换为JSON。不幸的是,只支持NSString、NSNumber、NSArray、NSDictionary或NSNull类型。

由于我的对象有一个额外的字段,即UIImage,我不知道该如何处理它。我相信许多人都遇到了这个常见的问题,那么最好的方法是什么呢?


也许您可以告诉我们您想要实现什么。 因为JSON不是最适合图像的格式。 - basvk
我有一个NSManagedObject,它有许多字段。我想将这些数据发送到Web服务器,因此我将其打包成JSON文件并发送到服务器。同时,服务器也可以以JSON格式向我发送一些数据。 - MegaManX
3个回答

2
你可以通过base64编码UIImage数据,并将其添加到json对象中。 要从UIImage获取数据,可以使用UIImagePNGRepresentationUIImageJPEGRepresentation。 代码如下,
NSData *imageData = UIImagePNGRepresentation(image);
NSString *base64encodedStr = base64encode(imageData);
[dict setObject:base64encodedStr forKey:@"myImage"];
//then covert dict to json object.

为了恢复UIImage数据,只需解析json对象并通过base64解码数据。
希望这能对你有所帮助。

1
没有base64encode函数,你自己写了吗? - MegaManX
@MegaManX 是的,你需要自己编写base64函数。 - xda1001
1
哦,该死,那是最难的部分 :-(,它占解决方案的90%。 - MegaManX

1
你可以将图像数据转换为字符串,然后写入该字符串。
NSData *imageData = UIPNGRepresentation(image);
NSString *imageString = [[NSString alloc] initWithData:imageData encoding:NSUTF8StringEncoding];

//I don't know how to use NSJSONSerialization
//[NSJSONSerialization serializeString:imageString];

0
NSString *base64encodedStr = [imageData base64Encoding];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接