Iphone 在xcode中将字节数组转换为映像?
我得到一个字节数组(我估计)在Iphone 在xcode中将字节数组转换为映像?,iphone,xcode,uiimage,Iphone,Xcode,Uiimage,我得到一个字节数组(我估计)在NSMutableArray的对象中。我得到的NSMutableArray是从服务URL解析而来的Xml。现在我需要将该字节数组转换为UIImage。通过谷歌,发现可以转换为NSData,然后是UIImage,但不明白如何转换。。?我怎么做 我的数组如下所示: ( { Name = "John"; Image = "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4w
NSMutableArray的
对象中。我得到的NSMutableArray
是从服务URL解析而来的Xml
。现在我需要将该字节数组转换为UIImage
。通过谷歌,发现可以转换为NSData
,然后是UIImage
,但不明白如何转换。。?我怎么做
我的数组如下所示:
(
{
Name = "John";
Image = "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJS
kcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXF
BYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgEKwZAAwEiAAIRAQMRAf/........
//big byte array
}
)
首先,我需要弄清楚它是否是字节数组?如何从中提取图像?您的数据是这样组织的:
- 最外面的数据结构是
或NSArray
(如您所写)NSMutableArray
- 在索引0(数组中的第一个元素)处,有一个
实例NSDictionary
- 在字典中,有两个键值对。一个是键图像和字符串作为值
- 字符串值是二进制数据,编码为Base64
- 二进制数据是图像数据
NSMutableArray* array = ... // from XML
NSDictionary* dict = [array objectAtIndex: 0];
NSString* dataString = [dict objectForKey: @"Image"];
NSData* imageData = [dataString base64DecodedData];
UIImage* image = [UIImage imageWithData: imageData];
请注意,Base64解码不是iOS的一部分。但是网络上有许多将字符串解码成数据的实现。只需谷歌一下
可以在上找到外观良好且简单的Base64实现。您的数据组织如下:
- 最外面的数据结构是
或NSArray
(如您所写)NSMutableArray
- 在索引0(数组中的第一个元素)处,有一个
实例NSDictionary
- 在字典中,有两个键值对。一个是键图像和字符串作为值
- 字符串值是二进制数据,编码为Base64
- 二进制数据是图像数据
NSMutableArray* array = ... // from XML
NSDictionary* dict = [array objectAtIndex: 0];
NSString* dataString = [dict objectForKey: @"Image"];
NSData* imageData = [dataString base64DecodedData];
UIImage* image = [UIImage imageWithData: imageData];
请注意,Base64解码不是iOS的一部分。但是网络上有许多将字符串解码成数据的实现。只需谷歌一下
可以在上找到一个外观良好且简单的Base64实现。但是,在我的mac(10.7.4)和xcode 4.1docs中没有提供链接u中的示例:受支持的构建目标-iOS 5.1/mac OS 10.7(xcode 4.3,Apple LLVM编译器3.0)-您应该更新--我甚至可以说,对于任何严肃的工作,请转到xcode 4.5.2+(否则,找一个不同的实现——正如godo所说:有很多!dropbox sdk也有一个不错的实现)获取此错误:target指定了产品类型“com.apple.product type.tool”,但“iphonesimulator”平台没有此类产品类型您可能已向项目中添加了太多的文件。只需将Base64目录中的四个文件添加到现有的iPhone应用程序项目中,并将
NSString+Base64.h
导入到类w中即可在这里,您解码Base64数据。但是,u提供的链接中的示例没有在我的mac(10.7.4)上运行,xcode 4.1docs在那里:受支持的构建目标-iOS 5.1/mac OS 10.7(xcode 4.3,Apple LLVM compiler 3.0)-您应该更新--我甚至可以说,对于任何严肃的工作,请转到xcode 4.5.2+(否则,找一个不同的实现——正如godo所说:有很多!dropbox sdk也有一个不错的实现)获取此错误:target指定了产品类型“com.apple.product type.tool”,但“iphonesimulator”平台没有此类产品类型您可能已向项目中添加了太多的文件。只需将Base64目录中的四个文件添加到现有的iPhone应用程序项目中,并将NSString+Base64.h
导入到类w中即可这里是对Base64数据的解码。