我面临着将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 回答
从问题中你不清楚你要做什么 .
将图片存储为字符串没有标准惯例,因此您需要解释[现场照片]返回的格式 .
例如,如果字符串包含图像的文件名,这是完全错误的方法,您应该使用initWithContentsOfFile加载图像 . 如果它包含base-64编码的URL,则需要使用Base64解码算法将其解码为数据 .
如果字符串只是原始二进制图像数据,那么这是一个非常奇怪的事情,因为NSString不是用于存储原始二进制数据,可能不能以这种方式使用,但如果它是你正在做的那么数据最多可能需要使用UTF16而不是UTF8进行转换,因为这是NSStrings的自然内部编码 .
编辑:从您的后续编辑,看起来你的字符串是十六进制编码,所以你需要使用十六进制解码器将其转换为数据 . 这里有一个关于如何做到这一点的答案:
Convert hex data string to NSData in Objective C (cocoa)
之后,您可能仍需要进行进一步处理,具体取决于数据的格式(例如PNG与JPEG),但请尝试将解码后的数据传递给intWithData并查看如何继续处理 .
希望对你有所帮助 .