非视网膜中RGB值的奇怪行为

时间:2014-01-09 09:50:18

标签: ios rgb

我正在其中一个iOS应用中创建一个位图,我在屏幕上绘制内容并使用以下代码捕获上下文:

CGImageRef imageRef = image.CGImage;
NSUInteger width    = CGImageGetWidth(imageRef);
NSUInteger height   = CGImageGetHeight(imageRef);

NSUInteger bytesPerPixel    = 4;
NSUInteger bytesPerRow      = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;

unsigned char *rawData     = (unsigned char*) calloc(height * width * bytesPerPixel, sizeof(unsigned char));
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGContextRef context = CGBitmapContextCreate(rawData, width, height,
                                             bitsPerComponent, bytesPerRow, colorSpace,
                                             kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);

CGColorSpaceRelease(colorSpace);
CGContextRelease(context);

此数据我稍后用于检查像素是否为黑色。我面临的问题是当我绘制一些东西及其黑色(RGB值0,0,0)时,在视网膜显示中正确检测到该像素的RGB值,但在非视网膜中它没有给出正确的值。它确实非视网膜给我0,0,0。有人知道吗?

1 个答案:

答案 0 :(得分:0)

检查UIImage的大小。非视网膜显示可能有所不同,因此如果设备上没有视网膜显示,您可以检查另一个像素的颜色。