Objective c CGDisplayCreateImageForRect图像与捕获图像的颜色不匹配

Objective c CGDisplayCreateImageForRect图像与捕获图像的颜色不匹配,objective-c,colors,screenshot,color-space,Objective C,Colors,Screenshot,Color Space,我正在用下面的代码捕获一个1px 1px的屏幕截图。然后我对图像进行采样,得到一个NSColor CGImageRef image = CGDisplayCreateImageForRect(displayID, CGRectMake(0, 0, 1, 1)); NSBitmapImageRep *rawImage = [[NSBitmapImageRep alloc] initWithCGImage:image]; NSColor *convertedColor = [rawImage co

我正在用下面的代码捕获一个1px 1px的屏幕截图。然后我对图像进行采样,得到一个NSColor

CGImageRef image = CGDisplayCreateImageForRect(displayID, CGRectMake(0, 0, 1, 1));

NSBitmapImageRep *rawImage = [[NSBitmapImageRep alloc] initWithCGImage:image];
NSColor *convertedColor = [rawImage colorAtX:0 y:0];
除了捕获的像素的颜色与源图像上的颜色不匹配外,所有操作都正常。例如:我在photoshop上画了一个红方块。我将正方形的颜色设置为RGB红色:255、绿色:0和蓝色:0。当我在屏幕上的正方形内捕获一个像素时,我得到RGB红色:255,绿色:0,蓝色:17。有没有办法使拍摄的图像与原始颜色匹配

编辑: 另外,当我在photoshop中拍摄红方块的屏幕截图,并读取屏幕截图上的RGB颜色时,颜色也是红色:255,绿色:0,蓝色:17。这似乎是操作系统上的颜色空间行为。这是预期的行为吗?这段代码基本上是一个颜色选择器,就像photoshop上的一样。然而,我假设photoshop在这个过程中的某个地方修正了颜色。有什么想法吗


谢谢

尝试深入拍摄1px屏幕截图,如下所示:

CGImageRef image = CGDisplayCreateImageForRect(displayID, CGRectMake(5, 5, 1, 1)); //another pixel then first pixel
NSBitmapImageRep *rawImage = [[NSBitmapImageRep alloc] initWithCGImage:image];
NSColor *convertedColor = [rawImage colorAtX:0 y:0];

如果我理解正确的话,变化是读取一个更位于红场中心的像素,对吗?我已经用鼠标光标控制了像素的x,y位置,结果还是一样的。谢谢你,王子