http://www.cnwish.net/download/image
http://www.csdn.net/expert/topic/55/55046.shtm

解决方案 »

  1.   

    好的,得用HLS(hue,light,saturation),
    RGB 到 他的转换函数如下
       double l_e,l_s,l_l;
    int m=max(r,g);
    m=max(m,b);
    int n=min(r,g);
    n=min(n,b); l_l=((m+n)*120)/(double)255; if(m==n){
    l_s=0;
    l_e=-1;  
    }
    else
    {
    if(l_l<=120)
    l_s=((m-n)*240)/(double)(m+n);
    else
    l_s=((m-n)*240)/(double)(510-m-n);

    int delta=m-n;
    if(r==m)
    l_e=(g-b)/(double)delta;
    else if(g==m)
    l_e=2+(b-r)/(double)delta;
    else if(b==m)
    l_e=4+(r-g)/(double)delta; l_e=l_e*40;
    if(l_e<0)
    l_e=l_e+240;
    } e=((int)(l_e*2)+1)/2;   
    l=((int)(l_l*2)+1)/2;
    s=((int)(l_s*2)+1)/2;}