mjs_color.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. export function calculateColor(temperature, brightness) {
  2. // 转换色温值为RGB
  3. let kelvin = temperature / 100;
  4. let red, green, blue;
  5. if (kelvin <= 66) {
  6. red = 255;
  7. green = kelvin;
  8. green = 99.4708025861 * Math.log(green) - 161.1195681661;
  9. if (kelvin <= 19) {
  10. blue = 0;
  11. } else {
  12. blue = kelvin - 10;
  13. blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
  14. }
  15. } else {
  16. red = kelvin - 60;
  17. red = 329.698727446 * Math.pow(red, -0.1332047592);
  18. green = kelvin - 60;
  19. green = 288.1221695283 * Math.pow(green, -0.0755148492);
  20. blue = 255;
  21. }
  22. // 根据亮度值调整颜色
  23. let brightnessCorrection = 1 + (brightness / 100) * 0.1; // 0.2 是亮度修正系数
  24. red = Math.round(red * brightness * brightnessCorrection / 100);
  25. green = Math.round(green * brightness * brightnessCorrection / 100);
  26. blue = Math.round(blue * brightness * brightnessCorrection / 100);
  27. // 返回RGB颜色值
  28. return `rgb(${red},${green},${blue})`;
  29. }