【问题标题】:NSString to UIImageNSString 到 UIImage
【发布时间】:2012-04-27 18:39:26
【问题描述】:

我在将 NSString 转换为 UIImage 时遇到问题。 编辑1: 我正在从 gtalk 服务器下载照片作为字符串并解析 xml 5896efb83a92deaee41a30648cc9dbf7e9942b0e 以用作图像。

NSString *myPicture = [存在照片]; NSData *pic = nil; if (![myPicture isEqualToString:@""]) { pic = [myPicture dataUsingEncoding:NSUTF8StringEncoding]; } UIImage *图片; NSLog(@"照片%@", pic); 如果(图片==零){ 图片 = [UIImage imageWithData:[Utils getAvatar]]; } 别的 { 图片 = [UIImage imageWithData:pic]; } NSLog(@"图片%@", 图片);

日志

照片 35383936 65666238 33613932 64656165 65343161 33303634 38636339 64626637 65393934 32623065 图片(空)

的部分
picture = [UIImage imageWithData:[Utils getAvatar]]
工作正常

有什么想法吗?

【问题讨论】:

  • 这没有任何意义。你想创建一个UIImage 并在其中绘制一个字符串吗?
  • 您希望从完全随机的字节序列中创建图像?你到底想完成什么。

标签: objective-c nsstring uiimage


【解决方案1】:

从问题中不清楚您要做什么。

没有将图片存储为字符串的标准约定,因此您需要说明 [presence photo] 返回的格式。

例如,如果字符串包含图像的文件名,这是完全错误的方法,您应该使用 initWithContentsOfFile 加载图像。如果包含 base-64 编码的 URL,则需要使用 Base64 解码算法等将其解码为数据。

如果字符串只是原始二进制图像数据,那么这是一件非常奇怪的事情,因为 NSString 不是用于存储原始二进制数据并且可能不能以这种方式使用,但如果它是你正在做的那么数据很可能需要使用 UTF16 而不是 UTF8 进行转换,因为这是 NSStrings 的自然内部编码。

编辑:从您的后续编辑来看,您的字符串似乎是十六进制编码的,因此您需要使用十六进制解码器将其转换为数据。这里有一个关于如何做到这一点的答案:

Convert hex data string to NSData in Objective C (cocoa)

之后,您可能仍需要进行进一步处理,具体取决于数据的格式(例如 PNG 与 JPEG),但请尝试将解码后的数据传递给 intWithData 并查看您的情况。

【讨论】:

  • 这种方法听起来很合理,所以我试过了,但结果是一样的。无论如何,谢谢。
  • 我认为您需要了解更多有关 gtalk 图像数据格式的信息。
【解决方案2】:

希望对你有所帮助。

picture = [[UIImage alloc] initWithData:pic];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多