안녕하세요
RGB로 작성된 이미지를 읽어서 CMYK 모드로 보여주려고 하는데
조규춘님의 RGBTOCMYK 함수(아래)를 사용하여 RGB를 CMKY로는 바꿨는데
바뀐 CMYK를 어떻게 TColor 형으로 바꾸는지 영 감이 안 오네요
조규춘님 함수중에 CMYKTORGB도 있긴 한데 이건 CMYK를 원래의 RGB로 바꾸는거라서
원래 RGB말고 CMYK로 보이는 색의 RGB로 바꿔야 하거든요(이해가 되시려나? ^^;)
설명이 아무래도 이해가 안될듯 싶어서 추가합니다.
포토샵에서 R:125 G:222 B:177 의 연녹색 색깔은 CMYK모드로 바꾸면
R:135 G:204 B:171 의 좀 더 탁한 연녹색으로 바뀌는데 제가 원하는건 포토샵처럼
실제 CMYK모드에서 보이는 색을 TColor형으로 얻기를 원하는겁니다.
아래 조규춘님 함수에서 C,M,Y,K 변수에 들어간 색을 TColor로 바꿀수만 있다면...
아시는분 답변좀 부탁드립니다.
※ 그리고 아래 함수중에 젤 아래 ColorCorrectcmyk 함수는 무슨 역할을 하는거죠?
<!--CodeS-->
//----조규춘님 함수--------------------------------------------------
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;
//---------------------------------------------------------------------
<!--CodeE-->
원하시는게