【问题标题】:Random Non-White Colors That Look Okay As Background for Black Text看起来不错的随机非白色颜色作为黑色文本的背景
【发布时间】:2010-12-14 15:31:22
【问题描述】:

我想使用可用作黑色文本背景的色调、饱和度和亮度生成随机的非白色颜色。我已经为随机颜色创建了一个生成器,但是当我扫描数字时,我在看起来太暗的颜色中看不到任何清晰的图案。

如何为黑色文本生成随机的非白色背景颜色?随意用代码或伪代码回答,但绝对没有必要。

【问题讨论】:

    标签: language-agnostic colors background-color


    【解决方案1】:

    仅生成具有高亮度值的颜色 - 例如,如果您对 {H,S,V} 中的每一个使用范围 0-255,您将在 [0,255] 中生成 H,在 [0,255] 中生成 S, [168,255] 中的 V。那应该给你足够明亮的颜色。您可能还想限制饱和度(例如 [0,192] 中的 S),因为全亮、全饱和度颜色上的黑色可能不太可读。

    您可能需要使用这些值来获得可以为您提供可用颜色的范围。

    【讨论】:

    • 我试试看,但我开始怀疑三个num之间有交互作用
    • @Yar:嗯,电脑屏幕的色域确实是有限的,如果我没看错的话:en.wikipedia.org/wiki/Gamut我真的不知道如何缩放这三个值以获得更多可用的颜色- 这个简单的 hack 足以满足我有限的需求。
    • 刚试了一下,其实看起来还不错。我会坚持一个更有趣的答案,但它非常好,谢谢。
    【解决方案2】:

    我不知道颜色理论,但你可以尝试随机生成 RGB 中的 3 个分量 (xxx,xxx,xxx),使分量之和大于 X(X 取决于你想要的对比度),然后转换为 HSB。

    【讨论】:

    • 谢谢,我会试试 [se dice "randomly"]。
    • 你的权利,谢谢指正。我更正了文字。
    • 没问题。我想试试你的解决方案——使用 RGB 而不是 HSV——如果它有效,我会投赞成票并接受它。很快就会回来
    • 问题是 200 个单位的绿色比 200 个单位的蓝色亮很多。这就是为什么我相信你需要一个像 YUV 亮度这样的模型,而不是虚假的“亮度 = R+G+B”。如果您想跳过繁重的阅读,只需定义 Y=(3*R+4*G+1*B)/8 并确保 Y 至少为 200 左右。
    【解决方案3】:

    HSV 和 HSL 是损坏的模型,与感知无关。您应该在 YUV 空间(也称为 YCbCr)中生成颜色,其中强度 (Y) 通道不仅仅是 R+G+B,而是模拟红色、绿色和蓝色的感知强度。一个好的起点是尝试至少 200 的随机 Y 值和介于 -50 和 50 之间的随机 U 和 V 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 2010-11-22
      • 2021-12-03
      • 2017-04-23
      • 2017-09-04
      • 2019-08-20
      • 2011-01-16
      • 1970-01-01
      相关资源
      最近更新 更多