【问题标题】:Converting 0-1 number to RGB blue scale (Python)将 0-1 数字转换为 RGB 蓝色刻度(Python)
【发布时间】:2014-01-16 10:21:09
【问题描述】:

我有一个介于 0 和 1 之间的数字,我想将其转换为相应的蓝色 RGB 分量。 所以,当数字为0时,我想获得[255,255,255](即白色),而如果数字为1,我想获得[0,0,255](蓝色)。

你知道一个公式或如何用 Python 实现它吗? 也很高兴知道如何将 0-1 数字转换为其他色标,例如绿色(从某种意义上说,0 再次对应于 [255,255,255],而 1 对应于 [0,255,0])。

提前感谢您提供的任何帮助!

【问题讨论】:

    标签: python colors


    【解决方案1】:
    def green(brightness):
        brightness = round(255 * brightness) # convert from 0.0-1.0 to 0-255
        return [255 - brightness, 255, 255 - brightness]
    
    def blue(brightness):
        brightness = round(255 * brightness) # convert from 0.0-1.0 to 0-255
        return [255 - brightness, 255 - brightness, 255]
    
    # etc., green(1.0) -> [0, 255, 0]
    

    【讨论】:

    • 不客气。我刚刚意识到,brightness 可能是错误的词。也许inverted_lightness?.
    【解决方案2】:

    这是一个奇怪的“刻度”,因为它是从白色到蓝色,而不是从黑色 ([0, 0, 0]) 到蓝色。

    反正就是线性插值:

    def make_blue(alpha):
      invalpha = 1 - alpha
      scaled = int(255 * invalpha)
      return [scaled, scaled, 255]
    

    如何将其扩展到其他颜色组件应该是显而易见的。

    另请参阅this answer,了解混合两种颜色的一般问题。在您的情况下,其中一种颜色是白色,另一种是蓝色,但您也想知道红色和绿色。

    【讨论】:

    • 对于 alpha = 0 不会给出 255、255、255。使用 abs(alpha - 1) * 255
    • @M4rtini 谢谢,我被(对我)不规则的要求绊倒了。 :) 已修复。
    • 对于 alpha = 1,它应该是 0,0, 255。所以应该改变前两个值,最后一个应该是 255。
    • @M4rtini Gaah。确实。再次感谢。
    【解决方案3】:

    使用HSL color space 获取正确的值。用 Hue 定义正确的颜色,对于蓝色,例如 vale '0.6'。饱和度可以是最大值 1,并用你的数字来控制亮度。 0 表示黑色,0.5 表示颜色,1 表示白色。所以我们只使用 0.5 到 1 的范围。定义正确的 HSL 颜色后,将其转换为 RGB color space。 把这一切放在一起

    import colorsys 
    colorsys.hls_to_rgb(0.6, 1, YOURNUMBER * 0.5 + 0.5)
    

    【讨论】:

      猜你喜欢
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2020-05-25
      • 1970-01-01
      相关资源
      最近更新 更多