NSData到字节数组(或整数数组)

时间:2012-05-01 19:06:46

标签: iphone uiimage bytearray nsdata

我正在使用一个webservice,它给我一个整数数组的图像。我已设法将此数组转换为NSData对象,然后使用下面的代码转换为UIImage。 现在我怀疑我将如何将图像转换为类似的数组。

数组如下所示:

[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 个答案:

答案 0 :(得分:1)

您可以使用以下内容获取图像数据:

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

如果你使用JPG,你可以使用UIImageJPEGRepresentation。

然后,提取字节数组:

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];