Iphone UIImage/char解释的像素

Iphone UIImage/char解释的像素,iphone,objective-c,xcode,colors,char,Iphone,Objective C,Xcode,Colors,Char,下面的代码将jpg转换为字符串 CGImageRef imageRef = example.CGImage; NSData *data = (NSData *) CGDataProviderCopyData(CGImageGetDataProvider(imageRef)); char *pixels = (char *)[data bytes]; 输出的一小部分是: “GJYˇKO[FJSˇILQˇKNSˇKKSˇOOYˇMMYˇNNVˇOOWˇNNVˇLL

下面的代码将jpg转换为字符串

 CGImageRef imageRef = example.CGImage;
    NSData *data     = (NSData *) CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
    char *pixels     = (char *)[data bytes];
输出的一小部分是:

“GJYˇKO[FJSˇILQˇKNSˇKKSˇOOYˇMMYˇNNVˇOOWˇNNVˇLLTˇKKSˇMMUˇOOWˇJMT”

我猜这三个符号一起构成了一个像素的信息,对吗?

如果这是真的,我如何解释这些符号(例如颜色)?

这将取决于图像的颜色空间。如果有alpha通道4
char
s将是一个像素,没有它将是3
char
s。如果是
RGBA
,那么G是你的
R
,J是你的
G
,Y是你的
B
,ˇ是你的
A
。如果是
ARGB
it G是你的
A
等。同样,当你将像素转换为字符*时,记住要跟踪长度,因为任何RGBA值为0都会导致空终止。

你不能打印出那样的位图。正如@Joe所说,字符是单独的颜色分量,但任何零都会终止字符串,还有许多其他的pro尝试打印NSData中的字节时出现了这样的问题

假设RGBA颜色空间,我的方法是这样的

struct {
    char red;
    char green;
    char blue;
    char alpha;
} color;
color *bitmap = (color *)[data bytes];
for(int i = 0;i < [data length] / sizeof(color);i++) {
    NSLog(@"%d, %d, %d, %d", colors[i].red, colors[i].green, colors[i].blue, colors[i].alpha);
}
struct{
焦红;
炭绿;
炭蓝;
炭α;
}色彩;
颜色*位图=(颜色*)[数据字节];
对于(int i=0;i<[数据长度]/sizeof(颜色);i++){
NSLog(@%d,%d,%d,颜色[i]。红色,颜色[i]。绿色,颜色[i]。蓝色,颜色[i]。alpha);
}
如果图像不在RGBA颜色空间中,则需要调整颜色结构以匹配它


另外,这段代码不是编译的,而是我在这篇文章中输入的。没有承诺它不会重新格式化您的硬盘。请在复制和粘贴之前考虑。

谢谢!您可能知道我如何获得有关颜色布局的信息吗?
CGColorGetColorSpace(imageRef)
我还想问问自己,如果是为了好玩或是为了某种酷炫的功能,如果是性能或存储,为什么要将字节转换成字符*。)