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 に変換できますが、ここでは 10 進数形式です。

私の質問は、それを UIImage に変換できますか? つまり、UIImage への 10 進数値です。

前もって感謝します。

4

2 に答える 2

7

応答には、すべての画像バイトが10進数として含まれています。( 16進数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 に答える