Python:colorsys.hls_to_rgb返回奇数值

时间:2014-03-21 15:49:39

标签: python colors

我目前正试图获得RGB格式的免费颜色。根据{{​​3}}的指导,我执行了以下步骤:

  1. 生成随机HSL颜色
  2. 通过执行前一种颜色的1-H创建免费HSL,同时保持SL
  3. 将两种颜色转换为RGB
  4. 我的代码如下:

    bg_color_hls = (random.random(), random.random(), random.random())
    fg_color_hls = (1-bg_color_hls[0], bg_color_hls[1], bg_color_hls[2])
    print bg_color_hls
    print fg_color_hls
    print colorsys.hls_to_rgb(*bg_color_hls)
    print colorsys.hls_to_rgb(*fg_color_hls)
    

    然而,这是打印以下内容:

    (0.5536645842193463, 0.489454360526385, 0.47696160643815266)
    (0.4463354157806537, 0.489454360526385, 0.47696160643815266)
    (0.2560034224515616, 0.5725687282723873, 0.7229052986012084)
    (0.2560034224515616, 0.7229052986012084, 0.5725687282723875)
    

    注意R值是如何始终相同的,它只是切换G和B.

    这不是互补色的工作方式。我的问题在哪里?

1 个答案:

答案 0 :(得分:1)

这不是你如何产生一种免费的色调。

您需要添加0.5,然后将其恢复到[0,1]范围内。

fg_color_hls = ((bg_color_hls[0] + 0.5) % 1.0, bg_color_hls[1], bg_color_hls[2])