2013-03-18 42 views
4

我发送一些数据和UIImage(将UIImage转换为NSData)发送到服务器,我的客户正在回复我们发送的响应。我们可以将NSDecimal值转换为UIImage吗?

但是,在这里我的客户给的UIImage像下面的格式

FaceImage":[255,216,255,224,0,16,74,70,73,70,0,1,1,1,1,44,1,44,0,0,255,219,0,67,0,8,6,6,7,6,5,8,7,7,7,9,9,8,10,12,20,13,12,11,11,12,25,18,19,15,20,29,26,31,30,29,26,28,28,32,36,46,39,32,34,44,35,28,28,40,55,41,44,48,49,52,52,52,31,39,57,61,56,50,60,46,51,52,50,255,219,0,67,1,9,9,9,12,11,12,24,13,13,24,50,.................................................................] 

我正在测试上面的一个测试什么,我们都可以使用此日志

NSLog(@"testingImageView.image is =%@",[[[datadic valueForKey:@"FaceImage"] objectAtIndex:0] class]); 

回应是获得: testingImageView.image = NSDecimal。

如果是NSData我们可以转换为UIImage,但这里是十进制格式。

我的问题是,我可以将其转换为UIImage?即UIImage的十进制值。

在此先感谢。

回答

7

您的回复包含所有图像字节为十进制数字。 (255,216为十六进制的FF,D8,表示JPEG图像的开始)。下面的代码应努力从数字阵列创建UIImage

NSArray *array = [datadic objectForKey:@"FaceImage"]; 
NSMutableData *imageData = [NSMutableData dataWithLength:[array count]]; 
uint8_t *imageBytes = [imageData mutableBytes]; 
for (NSUInteger i = 0; i < [array count]; i++) { 
    imageBytes[i] = [array[i] unsignedCharValue]; 
} 
UIImage *image = [UIImage imageWithData:imageData]; 
+0

哇...这救了我们的时间 – Babul 2013-03-18 10:28:20

1
NSDecimalNumber *myNSDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:myNSDecimal]; 
NSInteger myInt = [myNSDecimalNumber intValue];// convert nsdeimal to nsdecimal number and then to nsinteger 

NSUInteger index = (NSUInteger)myInt; 
NSData *payload = [NSData dataWithBytes:&index length:sizeof(index)];// convert nsinteger to nsdata 

UIImageView *imgv = [[UIImageView alloc] 
        initWithFrame:CGRectMake(100, 100, 200, 200)]; 
imgv.image = [UIImage imageWithData:retrievedData];// converting into image th nsdata 
[self.view addSubview:imgv];