Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как преобразовать цвета RGB в CMYK и обратно

Delphi , Графика и Игры , Цвета и Палитра

Как преобразовать цвета RGB в CMYK и обратно

Ниже представлены две функции RGBTOCMYK() и CMYKTORGB(), которые позволяют преобразовывать набор цветов RGB и CMYK.

Замечание: В цвете CMY чёрные тона достигаются путём одинаковых значений Циана, Магенты и Жёлтого чернил. Чёрные чернила используются только при чисто чёрных точках, для повышения контрастности и экономии цветных чернил. Как раз для этого предназначена третья функция ColorCorrectCMYK().


procedure RGBTOCMYK(R: byte;
  G: byte;
  B: byte;
  var C: byte;
  var M: byte;
  var Y: byte;
  var K: byte);
begin
  C := 255 - R;
  M := 255 - G;
  Y := 255 - B;
  if C < M then
    K := C
  else
    K := M;
  if Y < K then
    K := Y;
  if k > 0 then
  begin
    c := c - k;
    m := m - k;
    y := y - k;
  end;
end;

procedure CMYKTORGB(C: byte;
  M: byte;
  Y: byte;
  K: byte;
  var R: byte;
  var G: byte;
  var B: byte);
begin
  if (Integer(C) + Integer(K)) < 255 then
    R := 255 - (C + K)
  else
    R := 0;
  if (Integer(M) + Integer(K)) < 255 then
    G := 255 - (M + K)
  else
    G := 0;
  if (Integer(Y) + Integer(K)) < 255 then
    B := 255 - (Y + K)
  else
    B := 0;
end;

procedure ColorCorrectCMYK(var C: byte;
  var M: byte;
  var Y: byte;
  var K: byte);
var
  MinColor: byte;
begin
  if C < M then
    MinColor := C
  else
    MinColor := M;
  if Y < MinColor then
    MinColor := Y;
  if MinColor + K > 255 then
    MinColor := 255 - K;
  C := C - MinColor;
  M := M - MinColor;
  Y := Y - MinColor;
  K := K + MinColor;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  R: byte;
  G: byte;
  B: byte;
  C: byte;
  M: byte;
  Y: byte;
  K: byte;
begin
  R := 151;
  G := 81;
  B := 55;
  Memo1.Lines.Add('R = ' + IntToStr(R));
  Memo1.Lines.Add('G = ' + IntToStr(G));
  Memo1.Lines.Add('B = ' + IntToStr(B));
  Memo1.Lines.Add('-------------------');
  RGBTOCMYK(R, G, B, C, M, Y, K);
  Memo1.Lines.Add('C = ' + IntToStr(C));
  Memo1.Lines.Add('M = ' + IntToStr(M));
  Memo1.Lines.Add('Y = ' + IntToStr(Y));
  Memo1.Lines.Add('K = ' + IntToStr(K));
  Memo1.Lines.Add('-------------------');
  CMYKTORGB(C, M, Y, K, R, G, B);
  Memo1.Lines.Add('R = ' + IntToStr(R));
  Memo1.Lines.Add('G = ' + IntToStr(G));
  Memo1.Lines.Add('B = ' + IntToStr(B));
  Memo1.Lines.Add('-------------------');
  RGBTOCMYK(R, G, B, C, M, Y, K);
  c := c + 2;
  m := m + 2;
  y := y + 2;
  ColorCorrectCMYK(C, M, Y, K);
  Memo1.Lines.Add('C = ' + IntToStr(C));
  Memo1.Lines.Add('M = ' + IntToStr(M));
  Memo1.Lines.Add('Y = ' + IntToStr(Y));
  Memo1.Lines.Add('K = ' + IntToStr(K));
end;

Программа конвертации цветов!

Код написан на языке Pascal и состоит из трех процедур: RGBTOCMYK, CMYKTORGB и ColorCorrectCMYK. Эти процедуры позволяют конвертировать между моделями RGB (Красный, Зеленый, Синий) и CMYK (Сиан, Магента, Желтый, Черный).

Вот краткое описание каждой процедуры:

  1. RGBTOCMYK:
    • Принимает три значения RGB (R, G, B) в качестве входных данных.
    • Вычисляет соответствующие значения CMYK, вычитывая значения RGB из 255 (максимального значения).
    • Если рассчитанное значение K (Черный) больше 0, то корректирует значения C, M и Y, чтобы результат не был слишком темным.
  2. CMYKTORGB:
    • Принимает четыре значения CMYK (C, M, Y, K) в качестве входных данных.
    • Вычисляет соответствующие значения RGB, вычитая значения CMYK из 255 (максимального значения).
    • Если рассчитанное значение R, G или B будет больше 255, то устанавливает значение в 0 (черный).
  3. ColorCorrectCMYK:
    • Принимает четыре значения CMYK (C, M, Y, K) в качестве входных данных.
    • Вычисляет минимальное значение цвета (MinColor), найдя наименьшее из значений C, M и Y.
    • Корректирует значения C, M и Y, чтобы они не были слишком темными, оставляя значение K неизменным.

Главная форма имеет обработчик события клика кнопки, который демонстрирует, как эти процедуры можно использовать. Он:

  1. Конвертирует цвет RGB (R=151, G=81, B=55) в CMYK.
  2. Выводит полученные значения CMYK.
  3. Конвертирует значения CMYK обратно в RGB.
  4. Выводит полученные значения RGB.
  5. Вызывает ColorCorrectCMYK, чтобы корректировать значения CMYK для лучшего контраста.

Обратите внимание, что это реализация assumes specific color model и может не работать правильно с всеми цветами или устройствами. Кроме того, процедура ColorCorrectCMYK является простым приближением и может не давать оптимальных результатов в всех случаях.

Статья рассказывает о преобразовании цветов RGB в CMYK и обратно с помощью программных функций RGBTOCMYK, CMYKTORGB и ColorCorrectCMYK.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Цвета и Палитра ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-07-27 08:55:08/0.0073699951171875/2