2012-05-01 2 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

당신과 이미지에 대한 데이터를 얻을 수 있습니다 :

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

을 당신이 UIImageJPEGRepresentation을 사용할 수있는 JPG를 사용하는 경우.

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에서 이해할 수 없게됩니다) ...? –