значения rgb равны проценту cmyk? - PullRequest
1 голос
/ 20 ноября 2010

равны ли числовые значения rgb проценту cmyk?

для деталей:

у меня есть некоторые значения rgb, например, r-212 g-231 b-211 и в Photoshop он показывает cmyk как 40% 34% 80% 0%. Я хочу знать, можем ли мы получить те же значения rgb, задав процент cmyk ? потому что я должен использовать RGB в процентах в некоторых конкретных приложениях, но я не получаю его с помощью Photoshop ... Пожалуйста, помогите вкратце скажите мне, Можно ли получить значения RGB в процентах с помощью Photoshop?

Ответы [ 3 ]

1 голос
/ 20 ноября 2010

ваш вопрос не совсем понятен, но: нет, rgb и cmyk не совпадают, посмотрите на эту картинку, чтобы увидеть различное цветовое пространство, которое они могут представлять (и, очевидно, rgb состоит из 3 значений, cmyk состоит из 4):

rgb vs cmyk

1 голос
/ 20 ноября 2010

Вы можете приблизить преобразование между цветовыми пространствами RGB и CMYK , но оно не будет полностью точным или двунаправленным. Существует множество различий между здесь уместны два цветовых пространства, включая соответствующие им гаммы (см. схему в ответе oezi), аддитивные и вычитающие модели и наличие черного (ключ) в пространстве CMYK.

Если вы просто заинтересованы в простом способе преобразования цвета из его представления RGB в представление CMYK, вы можете использовать следующий код (произвольно в C #; не стесняйтесь конвертировать на язык по вашему выбору):

public CmykColor RgbToCmyk(int R, int G, int B)
{
    if ((R < 0) || (R > 255) || (G < 0) || (G > 255) || (B < 0) || (B > 255)) {
        throw new ArgumentException("RGB values must be in the range of 0 to 255");
    }

    if ((R == 0) && (G == 0) && (B == 0)) {
        return new CmykColor(0, 0, 0, 1);
    } else {
        double calcR = 1 - (R / 255);
        double calcG = 1 - (G / 255);
        double calcB = 1 - (B / 255);

        double K = Math.Min(calcR, Math.Min(calcG, calcB));
        double C = (calcR - K) / (1 - K);
        double M = (calcG - K) / (1 - K);
        double Y = (calcB - K) / (1 - K);

        return new CmykColor(Convert.ToInt32(C), Convert.ToInt32(M), Convert.ToInt32(Y), Convert.ToInt32(K));
    }
}

Но вам придется решить, даст ли это простое приближение результаты, которые «достаточно близки» для ваших нужд. Самая важная вещь для понимания - это то, что истинное преобразование полностью зависит от физического устройства / процесса и требует точно откалиброванных цветовых профилей для каждого из ваших устройств (монитор, отображающий RGB, принтер, печатающий CMYK, и подложка получение CMYK).

Это помогает объяснить, почему вышеупомянутый алгоритм (или любой другой, который вы могли бы реализовать самостоятельно) никогда не будет соответствовать результатам, возвращаемым Photoshop, который использует цветовые профили и некоторые дополнительные собственные алгоритмы для обработки своего преобразования. Если эта степень точности действительно важна, вы можете использовать что-то вроде API управления цветом Windows для обработки преобразования, которое автоматически применит текущий цветовой профиль, но вы, вероятно, обнаружите, что эти результаты не совсем совпадают с Photoshop.

Суть в том, что цвет субъективен. Как я уже говорил в начале, , даже если вы преодолеете барьер точности, у вас все равно не будет процесса преобразования, который является двунаправленным. Даже в Photoshop вы не можете преобразовать изображение из RGB в CMYK, а затем вернуться обратно, не потеряв и не изменив часть информации о цвете.


РЕДАКТИРОВАТЬ: Вы упомянули пару раз в ваших комментариях, что вы просто хотите "RGB значения в процентах". Я предполагаю, что это означает CMYK проценты, но я полагаю, что стоит указать, если вы просто хотите конвертировать стандартные значения 0-255 для компонентов RGB в RGB процент, вы можете просто разделите каждое значение на 255 (максимум), а затем умножьте на 100. Так, например:

Красный = RGB (255, 0, 0) = 100% Красный, 0% Зеленый, 0% Синий

DarkSeaGreen = RGB (143, 188, 143) = 56% красный, 74% зеленый, 56% синий

0 голосов
/ 20 ноября 2010

Не совсем.Формула немного сложнее, поскольку в CMYK больше компонентов, чем в RGB.

...