求CMYK和RGB的相互转换公式

string256 2001-07-21 05:02:56
像photoshop那样得出cmyk的合适值
RGB->cmyk,CMYK的值要确定,
...全文
1825 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sephil 2001-07-24
  • 打赏
  • 举报
回复
偶下次帖段代码上来
garypeng 2001-07-23
  • 打赏
  • 举报
回复
这是一个简单转换的程序:
void RGB2CMYK(BYTE R, BYTE G, BYTE B, BYTE& C, BYTE& M, BYTE& Y, BYTE& K)
{
C = 255 - R;
M = 255 - G;
Y = 255 - B;
K = C<M?C:M;
K = K<Y?K:Y;
C= C - K;
M = M - K;
Y = Y - K;
}
garypeng 2001-07-23
  • 打赏
  • 举报
回复
好像是
C=C-X'
M=M-X'
Y=Y-X'
K=K+delta
寻找合法的X'和delta值。
garypeng 2001-07-23
  • 打赏
  • 举报
回复
RBG和CMY分别是加色法和减色法,简单转换:
C = 255 - R
M = 255 - G
Y = 255 - B
K = min(C, M, Y)
反正分色应该是一个十分复杂的算法,具体我也不太清楚。
由于RGB的彩色空间比CMYK要大,简单转换也许并不能得到满意的值,
好像还需要校正。
string256 2001-07-23
  • 打赏
  • 举报
回复
RGB:66,158,214
CMYK:58,21,0,16(%)
CMYK(photoshop中):76,19,1,1(%)
上述算法和photoshop中的值不一样
string256 2001-07-23
  • 打赏
  • 举报
回复
RGB的彩色空间比CMYK要大,简单转换也许并不能得到满意的值,
好像还需要校正。
值还是有偏差呀
zl65000 2001-07-23
  • 打赏
  • 举报
回复
反方向的:
void CMYK2RGB(BYTE C,BYTE M,BYTE Y,BYTE K,BYTE& R,BYTE& G,BYTE& B)
{
if ( C + K < 255 )
R = 255 - (C + K);
else
R = 0;
if ( M + K < 255 )
G = 255 - (M + K);
else
G = 0;
if ( Y + K < 255 )
B = 255 - (Y + K);
else
B = 0;
}
whitelion 2001-07-22
  • 打赏
  • 举报
回复
学习
Wingsun 2001-07-22
  • 打赏
  • 举报
回复
不知道,我也想要知道!
xycleo 2001-07-22
  • 打赏
  • 举报
回复
关注!!!
猛禽 2001-07-22
  • 打赏
  • 举报
回复
加了K就不知道了,不加K是一个矩阵乘法,不过矩阵内容忘记了。^_^
string256 2001-07-22
  • 打赏
  • 举报
回复
这是我已经掌握的部分资料:
一、还没试成
BOOL WINAPI TranslateColors(
HTRANSFORM hColorTransform,
PCOLOR paInputColors,
DWORD nColors,
COLORTYPE ctInput,
PCOLOR paOutputColors,
COLORTYPE ctOutput
);
二、
K = 1 - max(R,G,B)
C = 1 - R - K
M = 1 - G - K
Y = 1 - B - K
但这个我觉得不对
从一个DX站点论坛回复看到的
算的结果至少有一项是0
三、用getCvalue等api
结果也不对,值只不过是RGB的倒过来罢了
string256 2001-07-21
  • 打赏
  • 举报
回复
K值也要算进去

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧