如何使用JavaScript测量用户监视器的亮度?

如何使用JavaScript测量用户监视器的亮度?,javascript,monitor,brightness,contrast,Javascript,Monitor,Brightness,Contrast,我注意到计算机显示器的亮度在不同的计算机之间有很大的差异 因此,这大大改变了网页的外观 有没有一种方法可以使用JavaScript自动检测用户显示器的亮度(或暗度),以便我可以相应地调整我的网页颜色 更新 请注意,我不希望手动用户参与。我希望这种检测是自动的,这样用户就不会意识到我会根据他们显示器的亮度/黑暗度自动改变调色板 更新2 还请注意,我所说的不是要调整/校准最终用户的实际显示器,而是通过编程方式调整要在网页上显示的选定颜色。也就是说,如果最终用户的显示比正常(亮度)更暗,我会改为显示一

我注意到计算机显示器的亮度在不同的计算机之间有很大的差异

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

有没有一种方法可以使用JavaScript自动检测用户显示器的亮度(或暗度),以便我可以相应地调整我的网页颜色

更新

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

更新2


还请注意,我所说的不是要调整/校准最终用户的实际显示器,而是通过编程方式调整要在网页上显示的选定颜色。也就是说,如果最终用户的显示比正常(亮度)更暗,我会改为显示一个使用更亮颜色的网页版本。

使用javascript无法做到这一点(我认为,至少在没有硬件帮助的情况下,用任何其他语言都无法做到这一点).

没有办法通过编程实现这一点。您需要做的是编写某种监视器校准测试,可能使用的变体,向用户显示两个或多个图像,让他们选择一个看起来更接近的图像,每次选择时调整颜色,直到您感觉所做的更改是准确的


编辑:基本上我是在建议建立类似的东西

否。一般来说,出于安全原因,JavaScript不允许了解您计算机的所有信息。

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


没有办法让每个人都像你那样看你的网站。你越早意识到这一点,你的生活就会越轻松。

用flash/silverlight应用程序代替怎么样?它可以使用用户的照相机(如果他们有)。然后,您可以分析来自摄像头的图片/视频,从而推断出有多少监视器光线反射到用户的脸上


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

在您的问题更新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})`;
}); 
这里我的网站的默认背景色是白色,所以当有人试图通过调整滑动条来降低亮度时,我会选择“偏移”,因为我的亮度条是垂直的

另一种方法是,您可以使用亮度栏,并拥有多个图像,其中一个图像比另一个稍暗。当用户降低亮度时,您将显示较暗的图像;当用户提高亮度时,您将显示较亮的图像


我希望我能回答你的问题。

对不起,你“想要”的根本不可能。对于任何程序,更不用说JavaScript了。即使这是可能的,你不认为用户调整亮度是有原因的吗?+1个疯狂的问题,-1个令人讨厌的更新你可能还需要检查显示器所在房间的亮度-例如,如果窗帘拉上,图像会显得更亮。@James:我不一定这么认为。永远不要低估用户的愚蠢。我有个客户抱怨我建的网站太大了。。。她将IE7放大了150%,但她不知道自己已经这样做了,解决她的抱怨的办法是向她展示如何放大/缩小,而不是缩小设计!你的建议需要用户手动参与,对吗?如果是这样的话,那不是我想要的。+1在Javascript中没有办法做到这一点,但我认为这是可能的。看看displaydatachannel@HankV:如果不使用用户参与,在JavaScript中(目前)无法做到这一点。你考虑过使用Java吗?即使这样,您也可能需要用户参与或硬件来校准监视器。您需要查看给定颜色的真实输出,并调整该颜色,直到正确为止。也就是说,如果0xFF0000显示为0xFF1111,您知道所有颜色必须变暗才能显示correct@Josh,我想你误解了。我不想校准最终用户监视器。相反,如果我知道他们的显示器比平时暗,我只想简单地改变我在网页上显示的颜色。@HankV:对不起,如果我的答案不清楚,我确实理解。我想说的是,你需要询问现实世界,以了解他们的显示器是否比正常情况下更暗。这可以通过询问用户或一个硬件来实现。-1这绝对不可能奏效+1.尽管有创意:)请用户举起一面镜子对着相机,以便相机捕捉屏幕,然后校准。。。英雄联盟Silverlight 4允许访问本地API调用,但它要求用户授予提升的权限。即使如此,我也不确定Silverlight是否能够访问必要的屏幕属性来进行这些类型的更改。+1疯狂,我喜欢:),特别是因为在一个奇怪的意义上,房间的亮度确实与监视器的亮度相对应,因为低亮度仅在低亮度房间中可见,所以在该方向上的假设实际上是合理的+1“没有办法让每个人都像你那样看你的网站。你越早意识到这一点,你的生活就会越轻松!!!