iPhone - 将* NSMutableString转换为UIImage

时间:2014-01-27 22:17:15

标签: ios iphone objective-c uiimageview uiimage

在我的应用中,我想显示条形码图像。条形码生成发生在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)

我在这里做错了什么/错过了什么?

由于

1 个答案:

答案 0 :(得分:2)

听起来你正在跳过一步 - 你需要在UIImage -initWithData:能够理解它之前撤消base-64编码。从iOS 7开始,NSData有一种实用方法可以帮助您:

imageData = [[NSData alloc] initWithBase64EncodedString:response.barcodeImage options:0];

如果您需要支持旧版本的iOS,快速网络搜索会提供大量示例代码,以构建您自己的base-64解码。