2

在目标 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];

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

4

1 回答 1

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/

于 2015-05-01T14:16:46.297 回答