如何确保滴管工具返回一致的值,尽管不同的显示配置文件

How do I ensure an eyedropper tool returns a consistent value, despite differing display profiles?

本文关键字:配置文件 显示 返回 何确保 确保 工具      更新时间:2023-10-16

我正处于一个不令人羡慕的位置,为一个需要在Windows和OSX上运行的应用程序处理一个庞大的已建立的代码库。我目前正在编写的一个部分包含一些滴管/颜色选择器工具的遗留代码。不幸的是,我没有太多的Mac开发经验,所以我希望有人能给我的问题一些启发。

滴管颜色在某些情况下略有错误,我跟踪问题到预期的CGColorSpaceRef之间的差异,这是通过调用CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB)和主显示配置文件设置的实际颜色空间。将操作系统显示配置文件设置为通用RGB可消除差异,但我希望滴管无论显示配置文件是什么都能获得一致的颜色。

检索主监视器显示配置文件并使用它而不是通用的RGB配置文件,以确保滴管工具获得一致的值吗?我找到了CGColorSpaceCreateWithPlatformColorSpace(…)函数,但根据文档,它自OSX 10.6以来已被弃用。在Quartz中,当前的处理方法是什么?

我在这方面感到有点受限制,因为我既没有权限也没有专业知识来进行重大更改,例如添加对其他框架的依赖。

NSColor有如下功能:

-(void)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha

返回由设备相关颜色空间转换而来的RGB组件。

示例取自Radiant Color Picker

CGFloat red, green, blue, a;
NSColor *colorAsRGB = [_color colorUsingColorSpaceName:NSDeviceRGBColorSpace];
[colorAsRGB getRed:&red green:&green blue:&blue alpha:&a];

相关链接:

NSColor

使用Colorspaces