【问题标题】:Python: reduce lightness of a RGB colorPython:降低RGB颜色的亮度
【发布时间】:2011-03-09 08:25:11
【问题描述】:

有没有一种简单的方法可以改变以 RGB 字符串形式给出的颜色的亮度?

例如

in_RGB = '#FF0000'  --> out_RGB = '#CC0000'

【问题讨论】:

  • 将 RGB 转换为 HSV 并降低 V?
  • 是的,我只是想知道是否有一种紧凑的方法可以做到这一点(或一些最佳实践)

标签: python colors rgb hsl


【解决方案1】:

将十六进制字符串转换为 RGB 三元组并不难。

完成此操作后,您可以使用 colorsys 模块(或者如果您更愿意自己实现它,方程式 here)将 RGB 转换为 HSL,然后进行您想要的操作,然后从 HSL 转换回 RGB。

然后只需转换回十六进制,再次添加# 符号,就可以开始了。

【讨论】:

  • 谢谢。为了简单起见,我实际上是通过将每个 RGB 分量划分为相同的比率然后将字符串取回。
  • 我使用 3 个语句转换了字符串:R = int(str_hex[0:2], 16); G = int(str_hex[2:4], 16); B = int(str_hex[4:6], 16);。有没有更直接的方法?
  • r,g,b = (int(str_hex[2x:2x+2]) for x in xrange(3)) 是一个选项,虽然不是更直接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 2023-03-03
相关资源
最近更新 更多