【发布时间】:2012-08-21 04:00:37
【问题描述】:
我正在使用以下代码捕获 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 会在此过程中的某处校正颜色。有什么想法吗?
谢谢!
【问题讨论】:
标签: objective-c colors screenshot color-space