2012-05-01 32 views
2

私は整数の配列としてイメージを与えるwebserviceで作業しています。私はこの配列をNSDataオブジェクトに変換し、次にUIImageのコードに変換しました。 今私は画像を同様の配列に変換する方法が疑わしいです。NSDataからバイト配列(または整数の配列)

配列は次のようになります。

[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,0,96,0,0,255,219,0,67,0,8,6,6,7,6,5,8,7,7,7,9,9,8,10,12,...] 

これは私がUIImageに上記の配列を変換するために使用するコードです。

+ (UIImage *)imageFromBytes:(NSArray *)bytes 
{ 
    unsigned char *buffer = (unsigned char *) malloc(bytes.count); 
    int i = 0; 
    for (NSDecimalNumber *num in bytes) 
     buffer[i++] = num.intValue; 
    NSData *data = [NSData dataWithBytes:buffer length:bytes.count]; 
    free(buffer); 

    return [UIImage imageWithData:data]; 
} 

だから、私は整数の配列(バイト配列)にUIImageを変換する必要があります。

誰かが正しい方向に向けることができますか?

答えて

1

あなたはとのイメージのためのデータを得ることができます:あなたはUIImageJPEGRepresentationを使用することができJPGを使用する場合は

UIImage *image = [UIImage imageNamed:@"image.png"]; 
NSData *data = UIImagePNGRepresentation(image); 

。次いで

そして、バイトの配列を抽出:

NSUInteger len = [data length]; 
Byte *byteData = (Byte*)malloc(len); 
memcpy(byteData, [data bytes], len); 
free(byteData) 

あなたのNSDataからも方法(void)getBytes:(void *)buffer length:(NSUInteger)lengthを使用することができます。

[data getBytes:&byteData length:len]; 
+0

バイトGetBytesメソッドから受信した - 彼らは理解することができる生のバイトNSDataオブジェクトのバイト(それは後で別のNSDataオブジェクトにデコードされるため、Javaでは理解できません)...? –

関連する問題