import os import json COLORS_JSON = os.path.join(os.path.dirname(os.path.abspath(__file__)), "colors.json") COLOR_TABLE = json.loads(open(COLORS_JSON, "r").read()) VALID_COLORS = [x["hexString"] for x in COLOR_TABLE] HEX_TO_ANSI = {x["hexString"]: x["colorId"] for x in COLOR_TABLE} def rgb_from_str(s): # s starts with a #. r, g, b = int(s[1:3], 16), int(s[3:5], 16), int(s[5:7], 16) return r, g, b def find_nearest_color(hex_color): R, G, B = rgb_from_str(hex_color) mindiff = None for d in VALID_COLORS: r, g, b = rgb_from_str(d) diff = abs(R - r) * 256 + abs(G - g) * 256 + abs(B - b) * 256 if mindiff is None or diff < mindiff: mindiff = diff mincolorname = d return mincolorname