Преобразование значений RGB в CMYK - PullRequest
1 голос
/ 12 июня 2010

У меня есть значения 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

Ответы [ 2 ]

3 голосов
/ 12 июня 2010

Ваша формула ожидает значения в диапазоне от 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, иначе вы получите деление на ноль.

0 голосов
/ 12 июня 2010

У вас есть несколько проблем:

  1. Вы используете 1-red, 1-green и т. Д. Это означает, что ваш код ожидает, что red, green и blue будут значениями от 0 до 1, а не большими целыми числами, такими как 93.
  2. %d - это спецификатор формата для целого числа, и вы передаете float arguments
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...