123456789101112131415161718192021222324252627282930313233 |
- export function calculateColor(temperature, brightness) {
- // 转换色温值为RGB
- let kelvin = temperature / 100;
- let red, green, blue;
- if (kelvin <= 66) {
- red = 255;
- green = kelvin;
- green = 99.4708025861 * Math.log(green) - 161.1195681661;
- if (kelvin <= 19) {
- blue = 0;
- } else {
- blue = kelvin - 10;
- blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
- }
- } else {
- red = kelvin - 60;
- red = 329.698727446 * Math.pow(red, -0.1332047592);
- green = kelvin - 60;
- green = 288.1221695283 * Math.pow(green, -0.0755148492);
- blue = 255;
- }
- // 根据亮度值调整颜色
- let brightnessCorrection = 1 + (brightness / 100) * 0.1; // 0.2 是亮度修正系数
- red = Math.round(red * brightness * brightnessCorrection / 100);
- green = Math.round(green * brightness * brightnessCorrection / 100);
- blue = Math.round(blue * brightness * brightnessCorrection / 100);
- // 返回RGB颜色值
- return `rgb(${red},${green},${blue})`;
- }
|