首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGColorSpace API的状态&基于iOS的颜色管理?

CGColorSpace API的状态&基于iOS的颜色管理?
EN

Stack Overflow用户
提问于 2016-02-17 22:22:53
回答 2查看 895关注 0票数 2

目前,我正试图了解CGColorSpace颜色管理API在iOS上的当前状态。在iOS 8.1SDK之前(据我所知),CGColorSpace.h中的许多函数&常量都被标记为__IPHONE_NA。但是,根据iOS 8.1API差异 for constants,许多以前是__IPHONE_NA的函数和常量都被更新为__IPHONE_2_0。那我们该怎么解释呢?

我认为苹果并不是在旧的iOS版本中追溯地增加了对这些功能的支持,而是将这些功能的可见性从私有更改为公共。当尝试在不同的iOS版本和设备上使用这些函数时,问题就出现了。例如:

代码语言:javascript
复制
CGColorSpaceRef sRgb = CGColorSpaceCreateWithName( kCGColorSpaceSRGB ); // kCGColorSpaceSRGB is labeled __IPHONE_8_0  
CFDataRef   profData = CGColorSpaceCopyICCProfile( ... );  
  • 在iPad Mini (原始)上运行iOS 8.2:sRgb & profData将为NULL。
  • 在iPad 3上运行iOS 8.3:sRgb & profData将为NULL。
  • 在iPhone 6 Plus上运行iOS 9.2.1:sRgb将包含一个非空CGColorSpaceRefprofData将包含一个非空CFDataRef缓冲区。
  • 在运行iPad Mini (原始)的iOS 9.2.1:sRgb将包含一个非空CGColorSpaceRefprofData将包含一个非空CFDataRef缓冲区。

因此,至少对于iOS 8,这些函数似乎没有完全实现。对于iOS 9,事情似乎开始起作用了。

是否有任何文档或资源描述这些API在iOS 8和iOS 9中是如何变化的?当CGColorSpaceCreateWithName( kCGColorSpaceSRGB )返回NULL时应该使用什么颜色空间?在这种情况下,CGColorSpaceCreateDeviceRGB()似乎是唯一的选择。

经过一些测试后,我发现可以从CGImageRef获得嵌入的颜色配置文件,并使用该配置文件将颜色转换应用到另一个颜色空间,只要您自己进行颜色转换。Core仍然不支持在颜色空间之间转换图像,但是如果您有自己的颜色管理功能,现在就可以在iOS上自己实现了--这以前是不可能的。

我只想知道什么是有用的,什么是不可行的。我尝试过查看发布说明,并寻找描述从iOS 7到8和8到9的变化的技术注释,但是我没有找到任何描述CGColorSpace API变化的东西。有没有人知道是否有这样的文件?

EN

回答 2

Stack Overflow用户

发布于 2017-06-14 04:03:15

您的发现是正确的--在iOS 9之前,不支持ColorSync/CGColorSpace;所有图像资产都假定在设备的sRGB颜色空间( CGColorSpace https://web.archive.org/web/20140703180539/https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGColorSpace/Reference/reference.html文档)中。

因此,尽管CGColorSpace/CGColorSpaceRef存在于早期版本中,但它直到iOS 9.0才做任何事情。

所以你有几个选择:

  1. 只支持iOS 9或更高版本。
  2. 在iOS 9+上使用适当的颜色空间渲染;iOS 8-用户只会得到不太准确的图像颜色渲染。
  3. 使用第三方图书馆,就像@SumitKumarSaha建议的那样。

值得注意的是,在过去一年左右,iPad Pro 9.7“(2016年)、iPad Pro 10.5”& 12.9“(2017年)、iPhone 7&7 Plus (2016年)以及这些产品系列中较新的机型都使用P3宽颜色空间(基于DCI P3)。

更多信息在WWDC 2015会议510 -核心图像中的新内容是什么

票数 2
EN

Stack Overflow用户

发布于 2016-11-29 12:12:55

您可以查看一个名为小CMS的开源库。它提供了良好的结果,你可以集成在你的应用程序。

https://github.com/mm2/Little-CMS

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35468964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档