我想将RGB / Hex格式的颜色转换为最接近的网页安全颜色。
有关网页安全颜色的详细信息,请访问:http://en.wikipedia.org/wiki/Web_safe_color
这个网站(http://www.colortools.net/color_make_web-safe.html)能够以我想要的方式进行,但我不确定如何在Python中实现它。任何人都可以帮助我吗?
答案 0 :(得分:5)
尽管有点用词不当,网页安全调色板对于颜色量化确实非常有用。它简单,快速,灵活,无处不在。它还允许使用RGB十六进制速记,例如#369
而不是#336699
。这是一个演练:
00, 33, 66, 99, CC, FF
。因此,我们可以将最大RGB值255
除以5(比可能的总值少一个),以获得多个值51
。255
(这使其成为0-1
而不是0-255
的值。)5
,并对结果进行舍入以确保其保持准确。乘以51
获取最终的网络安全值。总之,这看起来像是:
def getNearestWebSafeColor(r, g, b):
r = int(round( ( r / 255.0 ) * 5 ) * 51)
g = int(round( ( g / 255.0 ) * 5 ) * 51)
b = int(round( ( b / 255.0 ) * 5 ) * 51)
return (r, g, b)
print getNearestWebSafeColor(65, 135, 211)
正如其他人所建议的那样,无需疯狂地比较颜色或创建巨大的查找表。 : - )
答案 1 :(得分:2)
import scipy.spatial as sp
input_color = (100, 50, 25)
websafe_colors = [(200, 100, 50), ...] # list of web-save colors
tree = sp.KDTree(websafe_colors) # creating k-d tree from web-save colors
ditsance, result = tree.query(input_color) # get Euclidean distance and index of web-save color in tree/list
nearest_color = websafe_colors[result]
或为多个input_color
添加循环