from colormath.color_objects import sRGBColor, LabColor from colormath.color_conversions import convert_color from colormath.color_diff import delta_e_cie2000 def hex_to_rgb(h): return sRGBColor(h / 0x10000, (h / 0x100) % 0x100, h % 0x100, is_upscaled=True) COLORS_256 = [0x000000, 0x800000, 0x008000, 0x808000, 0x000080, 0x800080, 0x008080, 0xc0c0c0, 0x808080, 0xff0000, 0x00ff00, 0xffff00, 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff, 0x000000, 0x00005f, 0x000087, 0x0000af, 0x0000d7, 0x0000ff, 0x005f00, 0x005f5f, 0x005f87, 0x005faf, 0x005fd7, 0x005fff, 0x008700, 0x00875f, 0x008787, 0x0087af, 0x0087d7, 0x0087ff, 0x00af00, 0x00af5f, 0x00af87, 0x00afaf, 0x00afd7, 0x00afff, 0x00d700, 0x00d75f, 0x00d787, 0x00d7af, 0x00d7d7, 0x00d7ff, 0x00ff00, 0x00ff5f, 0x00ff87, 0x00ffaf, 0x00ffd7, 0x00ffff, 0x5f0000, 0x5f005f, 0x5f0087, 0x5f00af, 0x5f00d7, 0x5f00ff, 0x5f5f00, 0x5f5f5f, 0x5f5f87, 0x5f5faf, 0x5f5fd7, 0x5f5fff, 0x5f8700, 0x5f875f, 0x5f8787, 0x5f87af, 0x5f87d7, 0x5f87ff, 0x5faf00, 0x5faf5f, 0x5faf87, 0x5fafaf, 0x5fafd7, 0x5fafff, 0x5fd700, 0x5fd75f, 0x5fd787, 0x5fd7af, 0x5fd7d7, 0x5fd7ff, 0x5fff00, 0x5fff5f, 0x5fff87, 0x5fffaf, 0x5fffd7, 0x5fffff, 0x870000, 0x87005f, 0x870087, 0x8700af, 0x8700d7, 0x8700ff, 0x875f00, 0x875f5f, 0x875f87, 0x875faf, 0x875fd7, 0x875fff, 0x878700, 0x87875f, 0x878787, 0x8787af, 0x8787d7, 0x8787ff, 0x87af00, 0x87af5f, 0x87af87, 0x87afaf, 0x87afd7, 0x87afff, 0x87d700, 0x87d75f, 0x87d787, 0x87d7af, 0x87d7d7, 0x87d7ff, 0x87ff00, 0x87ff5f, 0x87ff87, 0x87ffaf, 0x87ffd7, 0x87ffff, 0xaf0000, 0xaf005f, 0xaf0087, 0xaf00af, 0xaf00d7, 0xaf00ff, 0xaf5f00, 0xaf5f5f, 0xaf5f87, 0xaf5faf, 0xaf5fd7, 0xaf5fff, 0xaf8700, 0xaf875f, 0xaf8787, 0xaf87af, 0xaf87d7, 0xaf87ff, 0xafaf00, 0xafaf5f, 0xafaf87, 0xafafaf, 0xafafd7, 0xafafff, 0xafd700, 0xafd75f, 0xafd787, 0xafd7af, 0xafd7d7, 0xafd7ff, 0xafff00, 0xafff5f, 0xafff87, 0xafffaf, 0xafffd7, 0xafffff, 0xd70000, 0xd7005f, 0xd70087, 0xd700af, 0xd700d7, 0xd700ff, 0xd75f00, 0xd75f5f, 0xd75f87, 0xd75faf, 0xd75fd7, 0xd75fff, 0xd78700, 0xd7875f, 0xd78787, 0xd787af, 0xd787d7, 0xd787ff, 0xd7af00, 0xd7af5f, 0xd7af87, 0xd7afaf, 0xd7afd7, 0xd7afff, 0xd7d700, 0xd7d75f, 0xd7d787, 0xd7d7af, 0xd7d7d7, 0xd7d7ff, 0xd7ff00, 0xd7ff5f, 0xd7ff87, 0xd7ffaf, 0xd7ffd7, 0xd7ffff, 0xff0000, 0xff005f, 0xff0087, 0xff00af, 0xff00d7, 0xff00ff, 0xff5f00, 0xff5f5f, 0xff5f87, 0xff5faf, 0xff5fd7, 0xff5fff, 0xff8700, 0xff875f, 0xff8787, 0xff87af, 0xff87d7, 0xff87ff, 0xffaf00, 0xffaf5f, 0xffaf87, 0xffafaf, 0xffafd7, 0xffafff, 0xffd700, 0xffd75f, 0xffd787, 0xffd7af, 0xffd7d7, 0xffd7ff, 0xffff00, 0xffff5f, 0xffff87, 0xffffaf, 0xffffd7, 0xffffff, 0x080808, 0x121212, 0x1c1c1c, 0x262626, 0x303030, 0x3a3a3a, 0x444444, 0x4e4e4e, 0x585858, 0x626262, 0x6c6c6c, 0x767676, 0x808080, 0x8a8a8a, 0x949494, 0x9e9e9e, 0xa8a8a8, 0xb2b2b2, 0xbcbcbc, 0xc6c6c6, 0xd0d0d0, 0xdadada, 0xe4e4e4, 0xeeeeee] lab_colors_256 = [convert_color(hex_to_rgb(x), LabColor) for x in COLORS_256] OPEN_COLORS = {'gray': [0xf8f9fa, 0xf1f3f5, 0xe9ecef, 0xdee2e6, 0xced4da, 0xadb5bd, 0x868e96, 0x495057, 0x343a40, 0x212529], 'red': [0xfff5f5, 0xffe3e3, 0xffc9c9, 0xffa8a8, 0xff8787, 0xff6b6b, 0xfa5252, 0xf03e3e, 0xe03131, 0xc92a2a], 'pink': [0xfff0f6, 0xffdeeb, 0xfcc2d7, 0xfaa2c1, 0xf783ac, 0xf06595, 0xe64980, 0xd6336c, 0xc2255c, 0xa61e4d], 'grape': [0xf8f0fc, 0xf3d9fa, 0xeebefa, 0xe599f7, 0xda77f2, 0xcc5de8, 0xbe4bdb, 0xae3ec9, 0x9c36b5, 0x862e9c], 'violet': [0xf3f0ff, 0xe5dbff, 0xd0bfff, 0xb197fc, 0x9775fa, 0x845ef7, 0x7950f2, 0x7048e8, 0x6741d9, 0x5f3dc4], 'indigo': [0xedf2ff, 0xdbe4ff, 0xbac8ff, 0x91a7ff, 0x748ffc, 0x5c7cfa, 0x4c6ef5, 0x4263eb, 0x3b5bdb, 0x364fc7], 'blue': [0xe7f5ff, 0xd0ebff, 0xa5d8ff, 0x74c0fc, 0x4dabf7, 0x339af0, 0x228be6, 0x1c7ed6, 0x1971c2, 0x1864ab], 'cyan': [0xe3fafc, 0xc5f6fa, 0x99e9f2, 0x66d9e8, 0x3bc9db, 0x22b8cf, 0x15aabf, 0x1098ad, 0x0c8599, 0x0b7285], 'teal': [0xe6fcf5, 0xc3fae8, 0x96f2d7, 0x63e6be, 0x38d9a9, 0x20c997, 0x12b886, 0x0ca678, 0x099268, 0x087f5b], 'green': [0xebfbee, 0xd3f9d8, 0xb2f2bb, 0x8ce99a, 0x69db7c, 0x51cf66, 0x40c057, 0x37b24d, 0x2f9e44, 0x2b8a3e], 'lime': [0xf4fce3, 0xe9fac8, 0xd8f5a2, 0xc0eb75, 0xa9e34b, 0x94d82d, 0x82c91e, 0x74b816, 0x66a80f, 0x5c940d], 'yellow': [0xfff9db, 0xfff3bf, 0xffec99, 0xffe066, 0xffd43b, 0xfcc419, 0xfab005, 0xf59f00, 0xf08c00, 0xe67700], 'orange': [0xfff4e6, 0xffe8cc, 0xffd8a8, 0xffc078, 0xffa94d, 0xff922b, 0xfd7e14, 0xf76707, 0xe8590c, 0xd9480f]} lab_open_colors = {} for category, values in OPEN_COLORS.items(): lab_open_colors[category] = [convert_color(hex_to_rgb(x), LabColor) for x in values] open_colors_256 = {} for category, values in lab_open_colors.items(): open_colors_256[category] = [] for rgb in values: rgb_256 = min(lab_colors_256, key=lambda x: delta_e_cie2000(rgb, x)) open_colors_256[category].append(lab_colors_256.index(rgb_256)) for color in ['gray', 'red', 'pink', 'grape', 'violet', 'indigo', 'blue', 'cyan', 'teal', 'green', 'lime', 'yellow', 'orange']: print('{}: {}'.format(color, open_colors_256[color]))