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