2

我一直在电子阅读器上测试一个 HTML5 网络应用程序,我得到了它大部分工作,但颜色都搞砸了(它是单色的)。我的应用程序使用大量颜色,每秒更新一次。我也需要它在彩色显示器上运行,所以我需要检测它是否是单色的。

我使用的电子阅读器是索尼制造的,它报告16,这screen.pixelDepthscreen.colorDepth我支持的大多数其他设备不同(24 和 32 很常见)。

到目前为止,我的想法是:

  • 始终向报告 16 位颜色的设备显示单色
  • 从用户代理嗅探/navigator.appVersion
  • 画布上的样本位(尽管我认为这也可能是谎言)

假设 16 位颜色 = 单色是否安全?还是有另一个我可以忽略的更可靠的技巧?

4

2 回答 2

2

在计算中,“单色”通常是 2 位,16 位显示器通常称为灰度(尽管它可能是其他颜色的阴影)。

考虑使用调色板,将颜色转换为适当的 16 位值,而不是设备嗅探。您可以从网络安全调色板开始。

或者,如果用户认为这样看起来会更好,可以为他们提供“使用灰度”选项——您可能会发现其他用户也选择了该选项。如果您的颜色都是基于类的,您可以替换当前样式表或添加具有适当重新分配颜色的新样式表。

于 2012-07-12T23:02:46.863 回答
0

我不熟悉如何检测灰度屏幕,但我希望一些色盲用户解决方案可以为您提供帮助。

问题是您需要使用颜色来传递信息,但屏幕(或色盲人的眼睛)会从颜色中删除一些信息,因此用户会感到困惑。解决方法是确保颜色传递的信息不受屏幕或眼睛的影响,也可以使用其他媒体而不是颜色。

  1. 色盲或灰度屏幕不会删除颜色中的所有信息。例如,如果颜色被描述为 HSL(色相/饱和度/亮度),则灰度屏幕会移除色相和饱和度,但会保留亮色。如果您使用 5 种不同的颜色,只要它们具有 5 个不同的 Light 值(例如 0.1、0.3、0.5、0.7、0.9),用户在灰度屏幕中识别它们就不会出现问题。

  2. 您还可以使用其他媒体来传输通过颜色传输的信息。例如,Mac 版 Adium 使用形状和颜色来指示联系人状态。在线用户是绿色矩形,离开是黄色三角形,忙碌是红色圆圈。这是色盲友好的,因为用户可以通过识别形状来了解联系人状态。

于 2012-07-14T06:38:29.933 回答