gpt4 book ai didi

ios - iOS 上 CGColorSpace API 和颜色管理的状态?

转载 作者:行者123 更新时间:2023-11-29 12:04:42 25 4
gpt4 key购买 nike

我目前正在努力了解 iOS 上 CGColorSpace 颜色管理 API 的当前状态。在 iOS 8.1 SDK(据我所知)之前,CGColorSpace.h 中的许多函数和常量都被标记为 __IPHONE_NA。然而,根据iOS 8.1 API Diffs对于 Core Graphics,许多以前为 __IPHONE_NA 的函数和常量已更新为 __IPHONE_2_0。那么我们应该如何解释呢?

我认为 Apple 并没有追溯性地将对这些功能的支持添加到旧的 iOS 版本中,而只是将这些功能的可见性从私有(private)更改为公共(public)。当尝试在不同的 iOS 版本和设备上使用其中一些功能时,问题就来了。例如:

CGColorSpaceRef sRgb = CGColorSpaceCreateWithName( kCGColorSpaceSRGB ); // kCGColorSpaceSRGB is labeled __IPHONE_8_0  
CFDataRef profData = CGColorSpaceCopyICCProfile( ... );
  • 在运行 iOS 8.2 的 iPad Mini(原装)上:sRgbprofData 将为 NULL。
  • 在运行 iOS 8.3 的 iPad 3 上:sRgbprofData 将为 NULL。
  • 在运行 iOS 9.2.1 的 iPhone 6 Plus 上:sRgb 将包含一个非 NULL CGColorSpaceRefprofData 将包含一个非NULL CFDataRef 缓冲区。
  • 在运行 iOS 9.2.1 的 iPad Mini(原装)上:sRgb 将包含一个非 NULL CGColorSpaceRefprofData 将包含一个非 NULL CFDataRef 缓冲区。

所以至少对于 iOS 8 来说,这些功能似乎并没有完全实现。对于 iOS 9,事情似乎开始起作用了。

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

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

我只想知道什么是有效的,什么是无效的。我尝试查看发行说明并寻找描述从 iOS 7 到 8 和 8 到 9 的变化的技术说明,但我无法找到任何描述 CGColorSpace API 变化的内容。有谁知道有没有这样的文件?

最佳答案

您的发现是正确的——在 iOS 9 之前,不支持 ColorSync/CGColorSpace;假定所有图像资源都在设备的 sRGB 色彩空间中(CGColorSpace 的文档 used to state “iOS does not support ColorSync, so all assets should be provided in the native device color space: sRGB” )

因此,尽管 CGColorSpace/CGColorSpaceRef 存在于早期版本中,但它在 iOS 9.0 之前没有做任何事情。

所以你有几个选择:

  1. 仅支持 iOS 9 或更高版本。
  2. 在 iOS 9+ 上使用正确的色彩空间渲染; iOS 8 - 用户只会获得不太准确的图像色彩渲染。
  3. 使用第 3 方库,如@SumitKumarSaha 所建议的那样。

同样值得注意的是,在过去一年左右的时间里,色彩空间精确渲染变得更加重要——iPad Pro 9.7"(2016)、iPad Pro 10.5"和 12.9"(2017)、iPhone 7 和 7 Plus(2016 年)以及这些产品线中的更新型号都使用 Display P3 广色域(基于 DCI P3)。

更多信息请访问 WWDC 2015 Session 510 - What's New in Core Image .

关于ios - iOS 上 CGColorSpace API 和颜色管理的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com