Skip to content

Instantly share code, notes, and snippets.

@paulkaplan
Last active March 4, 2024 10:29
Show Gist options
  • Save paulkaplan/5184275 to your computer and use it in GitHub Desktop.
Save paulkaplan/5184275 to your computer and use it in GitHub Desktop.
Color Temperature to RGB
// From http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/
// Start with a temperature, in Kelvin, somewhere between 1000 and 40000. (Other values may work,
// but I can't make any promises about the quality of the algorithm's estimates above 40000 K.)
function colorTemperatureToRGB(kelvin){
var temp = kelvin / 100;
var red, green, blue;
if( temp <= 66 ){
red = 255;
green = temp;
green = 99.4708025861 * Math.log(green) - 161.1195681661;
if( temp <= 19){
blue = 0;
} else {
blue = temp-10;
blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
}
} else {
red = temp - 60;
red = 329.698727446 * Math.pow(red, -0.1332047592);
green = temp - 60;
green = 288.1221695283 * Math.pow(green, -0.0755148492 );
blue = 255;
}
return {
r : clamp(red, 0, 255),
g : clamp(green, 0, 255),
b : clamp(blue, 0, 255)
}
}
function clamp( x, min, max ) {
if(x<min){ return min; }
if(x>max){ return max; }
return x;
}
@Slakinov
Copy link

Thanks for this!

@nospam2k
Copy link

Do you have RGBtoColorTemp?

Copy link

ghost commented Oct 19, 2021

Please make RGB2ColorTemp also

@nikitalogos
Copy link

Thank you very much!

@Rudxain
Copy link

Rudxain commented Mar 26, 2023

To anyone asking for RGB_to_Kelvin, this is way more complicated than you think. And there's many algorithms, depending on how we define color temperature.

If I gave you 0x00ff00 (max green), there's no color temperature that's purely green, so the return value should be NaN. The vast majority of RGB values cannot be reliably converted to kelvins

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment