我正在使用以下代码捕获 1px x 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 会在此过程中的某处校正颜色。有任何想法吗?
谢谢!