NSString到UIImage

时间:2012-04-16 12:26:01

标签: objective-c nsstring uiimage

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

    NSString *myPicture = [presence photo];
    NSData *pic = nil;

    if (![myPicture isEqualToString:@""]) {
        pic = [myPicture dataUsingEncoding:NSUTF8StringEncoding];
    }

    UIImage  *picture;

    NSLog(@"Photo %@", pic);

    if (pic == nil) {
        picture = [UIImage imageWithData:[Utils getAvatar]];
    }

    else {
        picture = [UIImage imageWithData:pic];
    }
    NSLog(@"Picture %@", picture);

日志

Photo 35383936 65666238 33613932 64656165 65343161 33303634 38636339 64626637 65393934 32623065
Picture (null)

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

从问题中我不清楚你要做的是什么。

将图片存储为字符串没有标准惯例,因此您需要解释[在线照片]返回的格式。

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

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

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

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

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

答案 1 :(得分:0)

希望对你有所帮助。

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