【发布时间】:2013-02-16 17:16:08
【问题描述】:
简单的问题,很可能是复杂的答案:
如何从 UIColor 对象获取 CMYK 和 Lab 值(如果有帮助,我知道 RGB 值)?
我发现了有关获取 CMYK 值的信息,但我无法从中获得任何准确的值,尽管它无处不在,但我听说这不是一个很好的 sn-p。
CGFloat rgbComponents[4];
[color getRed:&rgbComponents[0] green:&rgbComponents[1] blue:&rgbComponents[2] alpha:&rgbComponents[3]];
CGFloat k = MIN(1-rgbComponents[0], MIN(1-rgbComponents[1], 1-rgbComponents[2]));
CGFloat c = (1-rgbComponents[0]-k)/(1-k);
CGFloat m = (1-rgbComponents[1]-k)/(1-k);
CGFloat y = (1-rgbComponents[2]-k)/(1-k);
【问题讨论】:
-
参见stackoverflow.com/questions/4858131/… 它适用于 Java,但适用于基础知识。
-
我还认为基于 ICC 的颜色转换是正确的做法。但 ColorSync API 在 iOS 上不可用(并且从 OS X 10.6 起已弃用)。
-
@Josh Kahane:您粘贴的颜色转换公式可以在网上找到。然而,由于颜色转换远不是一个可以在单个公式中捕获的简单系统,因此公式的结果将很差且无用。无法使用颜色配置文件。
-
@JoshKahane:我的回答有帮助吗?您需要更多信息吗?
-
抱歉@MartinR 我忙于其他工作,完全忘记了这一点。我会在今天晚些时候尝试您的解决方案,并尽快回复您的结果。
标签: objective-c rgb uicolor cmyk lab-color-space