bod*_*ydo 5 python colors python-imaging-library
我正在为颜色创建一个快速查找表.假设你给我一个红色的阴影,然后我将它转换为最接近的web安全颜色并执行查找.它将返回许多不同的红色,这对我的目的是好的.
我现在唯一的问题是如何将给定的RGB值转换为Web安全值?我正在使用PIL和Python.我也不介意编写自己的算法,但这对我来说有点太难了.
我不知道是否有一种特定的方法可以用PIL来做到这一点,但是如果你有一个rgb颜色,并且我们将最接近的网络安全颜色定义为rgb空间中距离最小的颜色,你就可以做到如下:
def getwebsafe(r,g,b):
rw = 51 * ((int(r)+25)//51)
gw = 51 * ((int(g)+25)//51)
bw = 51 * ((int(b)+25)//51)
return (rw,gw,bw)
Run Code Online (Sandbox Code Playgroud)
这是因为 Web 安全颜色的每个组件有 6 种可能的色调:(0,51,102,153,204,255)。如果颜色中的某个分量在 [0,25] 范围内,则最接近的值为 0,如果在 [26-76] 范围内,则最接近的值为 51,等等。
或者,用列表表示 RGB 颜色的较短版本:
def getwebsafe(colour):
return [51*((int(c)+25)//51) for c in colour]
Run Code Online (Sandbox Code Playgroud)
编辑:编辑以确保即使 Python 使用非整数作为颜色以及 Python 2 和 3 时它也能工作。