如何将NSData转换为UIImage?

时间:2013-01-22 08:57:57

标签: ios ios6 uiimage nsdata xcode4.5

我已成功将UIImage转换为NSData并使用SBJson Web服务将其发送到服务器。 我正在使用此代码:

img=mainImage.image;
NSData *imgdata=UIImagePNGRepresentation(img);

NSString *post =[[NSString alloc] initWithFormat:@"gid=%@&image=%@",[lblgid text],imgdata];

NSURL *url=[NSURL URLWithString:@"http://www.abchjahdkahdakjskahdk/updategameimage.php"];

这里 img 是UIImage, mainImage 是UIImageView。从这一端开始,一切都很顺利。 现在在另一端,我必须得到图像那里我面临问题。 我正在使用此代码:

 NSData *imgdata=[abc valueForKey:@"image"];

    imge = [UIImage imageWithData:imgdata];

    imgview=[[UIImageView alloc]initWithImage:imge];

当我打印 imgdata 时它会返回与我从其他端发送的数据相同的数据,但是当我尝试将此数据转换回UIImage(在上面代码的第二行)时,它是抛出异常。

  

2013-01-22 14:23:43.298 Drase [946:11303] - [__ NSArrayI length]:无法识别的选择器发送到实例0x7566800   2013-01-22 14:23:43.298 Drase [946:11303] *由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [__ NSArrayI length]:无法识别的选择器已发送例如0x7566800'   * 第一次抛出调用堆栈:   (0x1ce1012 0x111ee7e 0x1d6c4bd 0x1cd0bbc 0x1cd094e 0x1cb1b2 0x881f3 0x87ef4 0x1c659 0x1132705 0x69920 0x698b8 0x12a671 0x12abcf 0x129d38 0x9933f 0x99552 0x773aa 0x68cf8 0x1c3cdf9 0x1c3cad0 0x1c56bf5 0x1c56962 0x1c87bb6 0x1c86f44 0x1c86e1b 0x1c3b7e3 0x1c3b668 0x6665c 0x29d2 0x2905)   libc ++ abi.dylib:terminate调用抛出异常。

我没有得到任何解决方案,请帮助我。

2 个答案:

答案 0 :(得分:0)

我认为当你执行这行时,abc是NSArray类型,即不可变的

imge = [UIImage imageWithData:imgdata];

由于abc NSArray

,它已引用imgdata

这里你是间接尝试修改它,这就是它调用[__NSArrayI length]的原因。但实际上没有这样的方法,因为我们可以计算NSArray但不能测量长度。这意味着没有这样的方法就是为什么它会给出错误

[__NSArrayI length]: unrecognized selector sent to instance

更新1:

尝试做这样的事情:

NSData *imgdata=[[abc valueForKey:@"image"]objectAtIndex:0];

答案 1 :(得分:0)

  NSData *data = yourData;

  UIImage *image = [UIImage imageWithData:data];

  NSData *data = yourData;

  UIImage *image = [[UIImage alloc] initWithData:data];
  ....
  [image release];