如何从 WCF 数据服务返回的 JSON 中获取图像数据?
我有一个 WCF 数据服务,它为一些对象提供服务,其中包括一些图像二进制数据(SQL Server 中的列类型为 image
)。它在 JSON 中表现为乱码文本。在我为此服务编写的 iOS 客户端中,我想将此数据显示为图像 ([UIImage imageWitData:myData]
)。
这就是我正在做的事情:
NSData *networkData = nil; //assume this magically gets data from the service
NSError *err = nil;
//assume the returned JSON has one object and is not an array
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:networkData
options:NSJSONReadingAllowFragments error:&err];
//handle error if needed
NSString *imageString = [dict objectForKey:@"Image"];
NSData *imageData = [imageString dataUsingEncoding:NSUTF8StringEncoding];
///The service is using UTF-8.
UIImage *image = [UIImage imageWithData:imageData];
将该图像
放入UIImageView
中不会显示任何内容。我做错了什么?
最佳答案
事实证明,从 WCF 数据服务返回的二进制数据是 base64 编码的。我正在使用NSData-Base64类别来解析它,并且效果很好。所以解决方案如下所示:
NSData imageData = [NSData dataFromBase64String:imageString];
当我将这些文件导入到我的项目中时,ARC 抛出了一些错误,但我能够通过删除 .m 文件中的几个 autorelease
调用来解决这些错误。
关于ios - 如何将 WCF 数据服务中的 JSON 图像数据转换为 iOS 中的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943157/