Advertisement
Guest User

HSV to Hex

a guest
Feb 17th, 2013
1,180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.66 KB | None | 0 0
  1.             function fGetRGB($iH, $iS, $iV)
  2.                 {
  3.              
  4.                     if($iH < 0) $iH = 0; // Hue:
  5.                     if($iH > 360) $iH = 360; // 0-360
  6.                     if($iS < 0) $iS = 0; // Saturation:
  7.                     if($iS > 100) $iS = 100; // 0-100
  8.                     if($iV < 0) $iV = 0; // Lightness:
  9.                     if($iV > 100) $iV = 100; // 0-100
  10.                      
  11.                     $dS = $iS/100.0; // Saturation: 0.0-1.0
  12.                     $dV = $iV/100.0; // Lightness: 0.0-1.0
  13.                     $dC = $dV*$dS; // Chroma: 0.0-1.0
  14.                     $dH = $iH/60.0; // H-Prime: 0.0-6.0
  15.                     $dT = $dH; // Temp variable
  16.                      
  17.                     while($dT >= 2.0) $dT -= 2.0; // php modulus does not work with float
  18.                     $dX = $dC*(1-abs($dT-1)); // as used in the Wikipedia link
  19.                      
  20.                     switch($dH) {
  21.                         case($dH >= 0.0 && $dH < 1.0):
  22.                         $dR = $dC; $dG = $dX; $dB = 0.0; break;
  23.                         case($dH >= 1.0 && $dH < 2.0):
  24.                         $dR = $dX; $dG = $dC; $dB = 0.0; break;
  25.                         case($dH >= 2.0 && $dH < 3.0):
  26.                         $dR = 0.0; $dG = $dC; $dB = $dX; break;
  27.                         case($dH >= 3.0 && $dH < 4.0):
  28.                         $dR = 0.0; $dG = $dX; $dB = $dC; break;
  29.                         case($dH >= 4.0 && $dH < 5.0):
  30.                         $dR = $dX; $dG = 0.0; $dB = $dC; break;
  31.                         case($dH >= 5.0 && $dH < 6.0):
  32.                         $dR = $dC; $dG = 0.0; $dB = $dX; break;
  33.                         default:
  34.                         $dR = 0.0; $dG = 0.0; $dB = 0.0; break;
  35.                     }
  36.  
  37.                     $dM = $dV - $dC;
  38.                     $dR += $dM; $dG += $dM; $dB += $dM;
  39.                     $dR *= 255; $dG *= 255; $dB *= 255;
  40.                      
  41.                     $R=round($dR);
  42.                     $G=round($dG);
  43.                     $B=round($dB);
  44.                      
  45.                     $R=dechex($R);
  46.                     If (strlen($R)<2)
  47.                     $R='0'.$R;
  48.                    
  49.                     $G=dechex($G);
  50.                     If (strlen($G)<2)
  51.                     $G='0'.$G;
  52.                      
  53.                     $B=dechex($B);
  54.                     If (strlen($B)<2)
  55.                     $B='0'.$B;
  56.                      
  57.                     return '#' . $R . $G . $B;                 
  58.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement