在我的应用中,我想显示条形码图像。条形码生成发生在Web服务器上。因此,iOS客户端调用Web服务来获取条形码图像的二进制blob表示。
在iOS端,我在响应类的NSMutableString属性中接收byte []。此值基于x64编码。我正在做的是将它转换为UIImage,然后我将在UIImageViewer中显示:
NSData *imageData = [response.barcodeImage dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"Image data%@", imageData);
UIImage *testImage = [[UIImage alloc] initWithData:imageData];
NSLog(@"Image %@", testImage);
第一个NSLog的值是这样的:
Image data<6956424f 5277304b 47676f41 4141414e 53556845 55674141 41693041 41414164 43415941 4141426d 44467a32 41414141 41584e53 52304941 72733463 36514141 4141526e
但是第二个NSLog输出是:Image(null)
我在这里做错了什么/错过了什么?
由于
答案 0 :(得分:2)
听起来你正在跳过一步 - 你需要在UIImage -initWithData:
能够理解它之前撤消base-64编码。从iOS 7开始,NSData有一种实用方法可以帮助您:
imageData = [[NSData alloc] initWithBase64EncodedString:response.barcodeImage options:0];
如果您需要支持旧版本的iOS,快速网络搜索会提供大量示例代码,以构建您自己的base-64解码。