如何使用JavaScript来衡量用户监控的亮度?

时间:2010-05-21 15:02:34

标签: javascript monitor brightness contrast

我注意到计算机显示器的亮度因计算机而异。

因此,这会大大改变网页的外观。

有没有办法使用JavaScript自动检测用户监视器的亮度(或暗),以便我可以相应地调整我的网页颜色?

更新

请注意,我不希望手动用户参与。我希望这种检测是自动的,这样用户就不会意识到我会根据显示器的亮度/暗度自动动态更改调色板。

更新2

请注意,我谈论想要调整/校准最终用户的实际监视器,而是以编程方式调整所选择的颜色以显示在网页本身上。这意味着,如果最终用户的显示比正常(亮度)更暗,我会改为显示使用更亮颜色的网页版本。

6 个答案:

答案 0 :(得分:14)

无法以编程方式执行此操作。您需要做的是编写某种显示器校准测试,可能使用images like these的变体,向用户显示两个或多个图像并要求他们选择看起来更接近的图像,每次调整时调整颜色一个选择,直到你觉得你所做的改变是准确的。

编辑:基本上我建议建立类似this的东西。

答案 1 :(得分:4)

大多数亮度/暗度设置都是显示器的功能。计算机中没有任何东西(更不用说在沙盒中运行的JavaScript)能够访问这种信息 - 它主要是计算机和监视器之间的单向数据流。诸如房间亮度以及显示器后面是否有光线等因素将同样影响屏幕的外观。

没有办法让每个人都能以您看到的方式看到您的网站。你越早意识到,你的生活就会越轻松。

答案 2 :(得分:3)

相反,flash / silverlight应用程序呢?它可以使用用户的相机(如果有的话)。然后,您可以分析来自相机的图片/视频,以推断出监视器光线在用户脸部的反射程度。

这将是一个非常非常脆弱和复杂的应用程序。

答案 3 :(得分:2)

你不能用javascript做到这一点(我认为你不能用任何其他语言做到这一点,至少在没有硬件帮助的情况下)。

答案 4 :(得分:1)

没有。作为一般规则,出于安全原因,不允许JavaScript详细了解您的计算机。

答案 5 :(得分:0)

在您问题的更新 2 之后,您的要求更加清晰。但是,我建议您为用户提供校准网站亮度的功能。 我们可以通过程序来实现。

一种方法,可能是,您可以创建一个亮度条,并通过偏移值更新主体的背景颜色。

/*Pure JavaScript code for brightness Calibration*/
let brightnessBar= document.getElementById('brightnessBar');
brightnessBar.addEventListener('mousemove',function(e){
    let blue = 255-`${e.offsetY}`;
    document.body.style.backgroundColor= `rgb(255,255,${blue})`;
}); 

这里我网站的默认背景颜色是白色,所以当有人试图通过调整滑动条来降低亮度时,我正在使用“offsetY”,因为我的亮度条是垂直的。

另一种方法可能是,您可以使用亮度条并拥有多个图像,其中一个比另一个稍暗。一旦用户降低亮度,您就会显示较暗的图像,而当用户增加亮度时,您会显示较亮的图像。

希望我能回答你的问题。