首页 文章

NSString到UIImage

提问于
浏览
0

我面临着将NSString转换为UIImage的问题 . 编辑1:我正在从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 回答

  • 1

    从问题中你不清楚你要做什么 .

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

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

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

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

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

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

  • 0

    希望对你有所帮助 .

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

相关问题