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

Posted

技术标签:

【中文标题】将 UIImage 数据转换为 const unsigned char myArry[100]【英文标题】:Convert UIImage data into const unsigned char myArry[100] 【发布时间】:2012-01-12 22:32:55 【问题描述】:

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

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

【问题讨论】:

你真的想要 PNG 数据吗?还是您正在寻找图像的位图表示? 您的格式示例究竟应该是什么?您想要某种二进制图像,其中每个像素都是 0 或 255,还是想要标准 RGB 位图表示,其中每个字节的三元组是像素的红色、绿色和蓝色值?现在你得到的是代表图像的 PNG(即压缩)版本的字节。 【参考方案1】:

你说你的结果是“garbage or nil”,但文档说它要么返回图像的字节数据,要么如果遇到错误则返回 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/

【讨论】:

以上是关于将 UIImage 数据转换为 const unsigned char myArry[100]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImage 转换为 Django 理解的数据

将UIImage转换为NSData并返回UIImage

将 UIImage 转换为 NSData 并与核心数据一起保存

将字节数组转换为 UIImage

将 UIImage 转换为 NSData 并在 Swift 中转换回 UIImage?

将UIImage转换为NSData并在Swift中转换回UIImage?