4

我正在发送一些数据并将 UIImage(将 UIImage 转换为 NSData)发送到服务器,我的客户端正在返回我们发送的响应。

但是,这里我的客户给 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 的十进制值。

提前致谢。

4

2 回答 2

7

您的响应包含所有图像字节作为十进制数字。(255,216FF,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];
于 2013-03-18T09:53:28.803 回答
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];
于 2013-03-18T09:59:40.780 回答