微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得显示器使用的色彩配置文件?

如何解决如何获得显示器使用的色彩配置文件?

我想使颜色在不同环境下看起来一致。我想知道是否有一种方法可以知道系统或显示器当前正在使用的颜色配置文件,以便我可以将颜色转换为正确的颜色空间,以供系统呈现。

感谢Brendan解释了Windows上的解决方案。但是,有谁知道Mac上的情况吗?

解决方法

我想知道是否有一种方法可以知道系统或显示器当前正在使用的颜色配置文件,以便可以将颜色转换为正确的颜色空间,以供系统呈现。

有一种方法(例如IDXGIOutput6::GetDesc1方法-参见https://docs.microsoft.com/en-us/windows/win32/api/dxgi1_6/nf-dxgi1_6-idxgioutput6-getdesc1)。

不幸的是,这不是很方便。原始信息似乎不包含任何有关γ的信息。而且很难找到将原始信息(RedPrimary,GreenPrimary,BluePrimary,WhitePoint)转换为颜色转换矩阵所需的数学方法。

使情况更糟;当相同的图形/窗口在具有不同颜色配置文件的多台显示器上拉伸时,它将无法工作;最终用户重新配置监视器设置时,它可能会中断(因为这不会反映在Windows从监视器获得的值中),并且监视器会随着时间而改变。这些事情给最终用户带来了负担(确保所有显示器匹配,定期进行显示器校准以实现准确的颜色等),并且大多数用户(不包括专业图形设计人员)不这样做。

注意:理想情况下;操作系统将提供标准的广色域线性色彩空间(例如CIE XYZ),并为所有软件进行色彩空间转换(例如,在后台使用GPU,分别为每个监视器使用);但是Window的API很旧(在1990年代价格昂贵),并且向后兼容使其难以进行类似的改造,因此它们大多只是采用“假定sRGB,即使它是错误的”,并且在软件方面造成了严重混乱需要精确色彩的开发人员。

,

由于您正在询问Windows颜色属性,因此Win API的Monitor Configuration Functions部分可用,可用于获取(和设置)颜色属性。这里只是几个例子:

在每个链接中列出了构建和运行应用程序所需的每个功能的特定组件。例如。

highlevelmonitorconfigurationapi.h
Dxva2.lib
Dxva2.dll

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。