follow my heart...
分类: C/C++
2010-01-01 23:58:49
CMYK模式属于印刷模式,而RGB属于光的三原色。CMYK采用减色法,而RGB采用加色法,网上流传的一些转换算法,在photoshop里面 打开之后发现颜色误差很大。
1).这是CMYK的色彩表:
2).对于BCB或是delphi,可以考虑采用GraphicEx,安装方法如下:
create new package.
Example GraphEx.dpk
requires
rtl,
vcl,
vcljpg;
contains
MZLib in 'MZLib.pas',
GraphicCompression in 'GraphicCompression.pas',
GraphicEx in 'GraphicEx.pas',
GraphicStrings in 'GraphicStrings.pas',
JPG in 'JPG.pas',
GraphicColor in 'GraphicColor.pas';
Then compile and install it. Now,as Design-time , drop Image1 (TImage)
on Form1, you can load images (*.gif,...) in picture property of image1.
Hope you do complete .
3).网上流传的不太精确的办法是:
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;
}
4).不过最后发现,真实的转换方法需要这样做:
var R=Math.round((1-C)*(1-K)*255);
var B=Math.round((1-Y)*(1-K)*255);
var G=Math.round((1-M)*(1-K)*255);
C,M,Y,K为百分比。这个贴子具有强烈的参考意义。