我需要将RGB值转换为CMYK值。我正在使用iPhone SDK尝试这样做。
我尝试了几件事,但不能将值设为0或1以外的任何值,或K元素完全错误(显示为负数)。
任何帮助都可以节省生命!
抱歉,代码:
float k = MIN(1-red,MIN(1-green,1-blue));
float c = (1-red-k)/(1-k);
float m = (1-green-k)/(1-k);
float y = (1-blue-k)/(1-k);
NSLog(@"%d %d %d %d",c,m,y,k);
使用红色,绿色和蓝色的以下值:
93,37和27我得到以下值:
0 0 1073741824 1071858897
答案 0 :(得分:3)
您的公式需要0到1范围内的值,但是您要为它提供0到255的更常见范围。
float k = MIN(255-red,MIN(255-green,255-blue));
float c = 255*(255-red-k)/(255-k);
float m = 255*(255-green-k)/(255-k);
float y = 255*(255-blue-k)/(255-k);
当k == 255时,您还需要一个特殊情况,否则您将得到除以零。
答案 1 :(得分:0)
你有一些问题:
1-red
,1-green
等。这表明您的代码需要red
,green
和blue
为{{{ 1}}和0
,而非1
等大整数。93
是整数的格式说明符,您正在传递%d
个参数