将UIImage数据转换为const unsigned char myArry [100]

时间:2012-01-12 22:32:56

标签: objective-c objective-c++ unsigned-char

在目标c中,

我需要将UIImage转换为符合以下类型的内容:

const unsigned char myImg[6300] = { 0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,
0x0,0xff,0xff,0x0,0x0,0xff,0xff,0xff,0xff,0x0,0x0,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x0,0x0,0xff,0xff, etc etc etc }

我已阅读NSData文档,并尝试:

self.animalImage = [UIImage imageNamed:@"animal.png"];
self.animalData = UIImagePNGRepresentation(self.animalImage);
NSUInteger size = [self.animalData length] / sizeof(unsigned char);
unsigned char* array = (unsigned char*) [self.animalData bytes];

但结果是垃圾或零,我需要它完全匹配上述格式。有什么想法吗?提前感谢任何提示!

1 个答案:

答案 0 :(得分:0)

你说你的结果是"垃圾或者没有"但文档说它将返回图像的字节数据,如果遇到错误则返回nil。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKitFunctionReference/#//apple_ref/c/func/UIImagePNGRepresentation

我不知道如何使用相同的图像生成不同的结果,所以我猜测你尝试了一些不同的图像,其中一些可能不是PNG图像。它无法正确解析的那些返回nil和"垃圾"你描述的可能实际上是你想要的数据。

获得NSData*个实例后,您可以使用enumerateByteRangesUsingBlock构建所需的新阵列。

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/