请先弄明白。RGB转CMYK的规律。

解决方案 »

  1.   

    借一下贵地,都时同类问题!!  我再加100分!!谁能讲讲,关于颜色的转换??
    我在转换rgb成hsv时到也转换回来,可为什么和电脑上的调色盘里的hsv显示的不一样!!很怪!!
      

  2.   

    rgb的表现能力比CMYK大得多,也就是说不是每一个RGB都对应一个CMYK,所以损失是必然的
    转换规律没找着,没法帮你了
      

  3.   


    // RGB to CMY 色彩转换
    function rgbtocmy () { 
    mycyan = 255 - myred; 
    mymagenta = 255 - mygreen;
    myyellow = 255 - myblue;
    correctCMYK();
    } // CMY to RGB 色彩转换 
    function cmytorgb () {
    myred = 255 - mycyan;
    mygreen = 255 - mymagenta;
    myblue = 255 - myyellow;
    correctCMYK();
    } // CMYK 色彩修正
    function correctCMYK () {
    if (rep_v != "ERR") {
    var temp = Math.min(Math.min(mycyan, mymagenta), myyellow);
    if (temp != 0) {
    temp2 = Math.round((rep_v / 100) * temp);
    rep_k = Math.round((temp2 / 255) * 100);
    rep_c = Math.round(((mycyan - temp2) / 255) * 100);
    rep_m = Math.round(((mymagenta - temp2) / 255) * 100);
    rep_y = Math.round(((myyellow - temp2) / 255) * 100);
    } else {
    rep_c = Math.round((mycyan / 255) * 100);
    rep_m = Math.round((mymagenta / 255) * 100);
    rep_y = Math.round((myyellow / 255) * 100);
    rep_k = 0; 



    出自http://www.xxy8.com/v2/2004-1/2004127133625.htm 的
    自己看
      

  4.   

    http://www.weste.net/html/200401/20040130QBI085936.html
    跟上边的一样
      

  5.   

    有会的来啊!!还有怎么怎么转换成 lab 格式???为什么网上的一些程序,一个转换的是一个结果呢?而结果还不一样!这个为什么呢??
      

  6.   

    ????
    <script>
    var c=0
    var m=100
    var y=100
    var k=45var a=Math.max(c,Math.max(m,y));
    var maxval=Math.max(k,a);
    var r = (k*c)/maxval;
    var g = (k*m)/maxval;
    var b = (k*y)/maxval; 
    document.write(r+","+g+","+b)
    </script>
      

  7.   

    http://www.cgan.net/book/books/print/frequency/link/frames/5.htm
    看不懂
      

  8.   

    怎么写成js??
    void KisColor::RGBtoHSV(int R, int G, int B, int *H, int *S, int *V)
    {
      qDebug("KisColor::RGBtoHSV");
      unsigned int max = R;
      unsigned int min = R;
      unsigned char maxValue = 0; // r=0, g=1, b=2
      
      // find maximum and minimum RGB values
      if (static_cast<unsigned int>(G) > max) { max = G; maxValue = 1; }
      if (static_cast<unsigned int>(B) > max) { max = B; maxValue = 2; }
      
      if (static_cast<unsigned int>(G) < min) min = G;
      if (static_cast<unsigned int>(B) < min ) min = B;
      
      int delta = max - min;
      *V = max; // value
      *S = max ? (510*delta+max)/(2*max) : 0; // saturation
      
      // calc hue
      if (*S == 0)
    *H = -1; // undefined hue
      else 
    {
      switch (maxValue)
    {
        case 0: // red
      if (G >= B)
    *H = (120*(G-B)+delta)/(2*delta);
      else
        *H = (120*(G-B+delta)+delta)/(2*delta) + 300;
      break;
        case 1: // green
      if (B > R)
        *H = 120 + (120*(B-R)+delta)/(2*delta);
      else
        *H = 60 + (120*(B-R+delta)+delta)/(2*delta);
      break;
        case 2: // blue
      if (R > G)
        *H = 240 + (120*(R-G)+delta)/(2*delta);
      else
        *H = 180 + (120*(R-G+delta)+delta)/(2*delta);
      break;
    }
        }
    }
      

  9.   

    给你一个cmyk的
    kimageshop'KisColor::RGBtoCMYK() (./koffice/kimageshop/core/kis_color.cc:409)
    void KisColor::RGBtoCMYK(int R, int G, int B, int *C, int *M, int *Y, int *K)
    {
      qDebug("KisColor::RGBtoCMYK");
      int min = (R < G) ? R : G;
      *K = (min < B) ? min : B;
      
      *C = 255-(R - *K);
      *M = 255-(G - *K);
      *Y = 255-(B - *K);
    }