首页  编辑  

转化RGB颜色为CMYK颜色

Tags: /超级猛料/Picture.图形图像编程/颜色处理/   Date Created:

转化RGB颜色为CMYK颜色

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;