iPhone - 将 *NSMutableString 转换为 UIImage

Posted

技术标签:

【中文标题】iPhone - 将 *NSMutableString 转换为 UIImage【英文标题】:iPhone - Converting *NSMutableString to UIImage 【发布时间】:2014-01-27 22:17:14 【问题描述】:

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

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

谢谢

【问题讨论】:

如果response.barcodeImage 代表base64 编码的图像数据,您在哪里尝试将base64 编码的字符串转换为数据?您发布的代码没有进行此类尝试。 @rmaddy:这就是我要这样做的地方:NSData *imageData = [response.barcodeImage dataUsingEncoding:NSUTF8StringEncoding]; 那不做base64转换。 @ezile 你从哪里知道这个方法可以进行 Base64 解码? 您是否阅读过它的文档?您是否甚至考虑过 【参考方案1】:

听起来你跳过了一步——你需要在 UIImage -initWithData: 理解它之前撤消 base-64 编码。从 iOS 7 开始,NSData 有一个实用方法可以为您做到这一点:

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

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

【讨论】:

这句话不是会这样吗? NSData *imageData = [response.barcodeImage dataUsingEncoding:NSUTF8StringEncoding]; @ezile - 不,甚至没有接近。 另外,我不是为 IOS 7 构建的,所以它给了我找不到 initWithBase64EncodedString 函数的错误。有没有其他实用程序/方法可以做到这一点? @ezile 是的,谷歌搜索“Objective-C base64 库”。

以上是关于iPhone - 将 *NSMutableString 转换为 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

将iphone设置为振动并通过应用程序将iphone设置回声音[关闭]

iPhone/iPad - 只将通用打入 iPhone 应用程序

iPhone 13机型将比iPhone 12略厚 相机模块更大

如何修复我的 [UIScreen 主屏幕] 将 iPhone 5 识别为 iPhone 4

如何使用 node.js 和 socket.io 将文件从 iPhone 发送到另一台 iPhone?

如何将音乐文件从 iphone 音乐库导入 iPhone 应用程序