首页 > 解决方案 > 如何在 obj-c 中获得扩展的 sRGB 颜色空间?

问题描述

我需要改变颜色值。需要在 RGB --> HSV -->RGB 等之间进行转换。

不幸的是 -getHue() 方法不适用于普通的 sRGB。

[col getHue:&hue saturation:&sat brightness:&val alpha:&alpha];

    NSLog(@"HUE == %f", hue);
    NSLog(@"SAT == %f", sat);
    NSLog(@"VAL == %f", val);

我的应用程序需要支持 iOS9 +。我不知道如何使用旧的 obj-c API 将色彩空间更改为 extendedSRGB。

在 iOS 10 之前的 iOS 版本上,以及在 iOS 10 之前的 iOS 版本上链接的应用程序,颜色会在以下两种颜色空间之一中创建和返回:

Device-Dependent Gray

Device-Dependent RGB

这些设备色彩空间与 sRGB 色彩空间的显示特性紧密对应。这些颜色空间中的颜色分量值由 0.0 到 1.0 之间的值表示。创建颜色时,输入参数将被限制在此颜色空间内。

如果您的应用在 iOS 10 或之后链接,并且在 iOS 10 或更高版本上运行时,颜色将在扩展颜色空间中创建:

kCGColorSpaceExtendedGray

kCGColorSpaceExtendedSRGB

就是这样,我的整个项目都被这个未解决的 API 问题冻结了。:o 有人可以指导我如何将色彩空间更改为扩展 RGB (iOS9 API) 吗?

标签: iosobjective-c

解决方案


我的应用程序需要支持 iOS9 +。我不知道如何使用旧的 obj-c API 将色彩空间更改为 extendedSRGB。

在 iOS 10 之前不存在扩展的色彩空间。因此,无法在 iOS 9 或更早版本上使用它们。请在此处查看 Apple 的文档,其中列出了支持的版本kCGColorSpaceExtendedSRGB

https://developer.apple.com/documentation/coregraphics/kcgcolorspaceextendedsrgb

SDK

  • iOS 10.0+
  • macOS 10.12+
  • tvOS 10.0+
  • watchOS 3.0+

推荐阅读