Q&A

  • CMYK를 보이는 그대로의 TColor로...
안녕하세요

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-->
1  COMMENTS