C语言HSL转RGB程序

[复制链接]
查看191 | 回复0 | 2021-11-15 17:09:02 | 显示全部楼层 |阅读模式
这样的程序,随机输入一些,得出的结果都是b的值。r,g两个的值都是b的值。输入范围是正常的HSL数值范围。
  1. float hue2rgb(float p,float q,float t){
  2.             
  3.             if(t < 1/6)
  4.             {
  5.              return p + (q - p) * 6 * t;           
  6.             }
  7.             if(1/6<=t&&t < 1/2)
  8.             {
  9.             return q;
  10.             }
  11.             if(1/2<=t&&t < 2/3) {
  12.             return p + (q - p) * (2/3 - t) * 6;
  13.             }
  14.              return p;
  15.         }
  16. float hslToRgb(float h, float s, float l){
  17.     float  q,p;
  18.     float  r,g,b;
  19.     h=h/360;
  20.     s=s/100;
  21.     l=l/100;
  22.     if(s == 0){
  23.         r = g = b = l; // achromatic
  24.     }else{
  25.         if(l<0.5){
  26.         q=l * (1 + s);
  27.         }else{
  28.        q=l + s - l * s;
  29.         }
  30.           if(h < 0) h=h+ 1;
  31.           if(h > 1) h=h- 1;
  32.         
  33.          p = 2 * l - q;
  34.         r = 255*hue2rgb(p, q, h+1/3);
  35.         g =255* hue2rgb(p, q, h);
  36.         b =255* hue2rgb(p, q, h-1/3);
  37.     }

  38.     return  b;
  39. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则