资料上说: Y = R+G
           M = B+R
           C = B+G
 
    拿 Y = R+G 来说, 比如我得到的R值为255, G也值为255, 那么Y 等于多少? 总觉得直接相加或进行矢量运行总不对(因为资料上Y是用5bit来表示的,即要小于32)。 不知它真正是怎么运算的?

解决方案 »

  1.   

    //cmyk
    float C = 1-(R*1.0/255);
    float M = 1-(G*1.0/255);
    float Y = 1-(B*1.0/255); float var_K = 1;
    if(C < var_K)
    {
    var_K = C;
    }
    if(M < var_K)
    {
    var_K = M;
    }
    if(Y < var_K)
    {
    var_K = Y;
    }

    C = (C - var_K) / (1 - var_K);
    M = (M - var_K) / (1 - var_K);
    Y = (Y - var_K) / (1 - var_K);
    float K = var_K;
    一般使用以上的公式,不过,photoshop有自己的算法。
      

  2.   

    YMC 黃/紫紅/青藍YMC (Yellow、Magenta、Cyan) 三種顏色和 RGB 三色各為互補色,
    通常RGB 用在光學效果的彩色螢幕上,利用 RGB 可調配出各種不同的
    光點,但是利用物理反應的噴墨印表機可就不是如此了,利用 RGB 效果
    無法達到令人滿意的效果,所以一般彩色噴墨印表機都使用和 R、G、B 
    互為互補色的C、M、Y 當成顏料。
      

  3.   

    To holyeagle(一杯清茶):
       
       非常谢谢,不过再确认一下:
       按你的公式算出的Y值一定小于32么?
      

  4.   

    还有个问题是: 我所要的YMC都要是整数,怎么办?
      

  5.   

    CMYK的取值应该再0~100之间,k是最小的那个通道的值。由于黑色替换值选择不同,所以得到的结果也不同。所以CMY~RGB是无损的,RGB~CMY就会出现这个问题。photoshop里面可以选择 CMYK 的分色方案为 “UCR”或者“GCR”
      

  6.   

    To, holyeagle(一杯清茶): 现在麻烦你再指点一下: 将RGB值转换成YMC的值,然后用下面的语句调试:
    TRACE( "  %d", C );
    TRACE( "  %d", M );
    TRACE( "  %d", Y );
    输出结果:
     .....0  0  0  0  0  -1610612736  0  0  -2147483648  -1073741824  0  -
    2147483648  0  0  536870912  1073741824  0  -536870912  -1073741824  
    0  -2147483648  -1073741824  0  1610612736  -1610612736  0 ......如果是 
             TRACE( "  %.2f", C );
    TRACE( "  %.2f", M );
    TRACE( "  %.2f", Y );
    输出结果:
    ......0.20  0.00  0.67  0.18  0.00  0.66  0.23  0.00  0.64  0.64  0.00  0.65  0.88  0.00  0.66  0.81  0.00  0.66  0.81  0.00  0.66  0.81  0.00  0.66  0.81  0.00  0.66  0.81  0.00  0.64  0.85  0.00  0.70  0.89  0.00  0.41  0.43  0.00  0.03  0.02  0.00  0.42  0.46  0.00  0.70  0.89  0.00  0.66  0.81  0.00  0.64  0.85  0.00  0.70  0.89  0.00  0.47  0.52  0.00  0.07  0.05  0.00  0.00  0.00  0.00  0.00.....这应该是不正确的吧,为什么会这样?
      

  7.   

    To: holyeagle(一杯清茶) 
        这些值乘以255是会大于100的,是不是有更详细的算法进行处理后值才会落到1-100之间? 那这个算法又是什么呢?
      

  8.   

    是乘以100这个网站上的公式比较全
    http://www.easyrgb.com/math.php?MATH=M13#text13
      

  9.   

    To holyeagle(一杯清茶): 
       你是真正解决我的问题的人,怎么感谢你呢?       
       还是给分先。
       
       thank u.