psychos.utils.Color#
- class psychos.utils.Color(color: str | Tuple[int, int, int] | Tuple[int, int, int, int] | Tuple[float, float, float] | Tuple[float, float, float, float] | Color | None = None, space: Literal['auto', 'rgb', 'rgba', 'rgb255', 'rgba255', 'hex', 'hexa', 'name', 'hsv', 'cmyk', 'yiq', 'hsl', None] | str = 'auto')[source]#
Bases:
objectA class to handle color conversions between different formats.
- Parameters:
value (Optional[ColorType]) – The initial color value. Can be: - None: This sets the color to None. - str: A hex string (e.g., “#FF5733”) or color name (e.g., “red”). - Iterable with 3 or 4 numbers (ints [0,255] or floats).
- __init__(color: str | Tuple[int, int, int] | Tuple[int, int, int, int] | Tuple[float, float, float] | Tuple[float, float, float, float] | Color | None = None, space: Literal['auto', 'rgb', 'rgba', 'rgb255', 'rgba255', 'hex', 'hexa', 'name', 'hsv', 'cmyk', 'yiq', 'hsl', None] | str = 'auto') None[source]#
Initialize the Color
Methods
__init__([color, space])Initialize the Color
batch_register_named_colors(colors)Register multiple named colors at once.
List all available named colors.
List all available color spaces.
register_conversion(from_space, to_space[, func])Register a new color conversion function, either by using it as a decorator or by calling it directly with a function.
register_named_color(name, hex_code)Register a new named color.
to(space)Generic class to get the color in a specific space.
to_cmyk()Convert the current color to the CMYK color space.
to_hex()Convert the current color to a hexadecimal string.
to_hexa()Convert the current color to a hexadecimal string with alpha (transparency) included.
to_hsl()Convert the current color to the HSL color space (Hue, Saturation, Lightness).
to_hsv()Convert the current color to the HSV color space.
to_name()Convert the current color to a named color, if available.
to_rgb()Convert the current color to the RGB color space (float values between 0 and 1).
Convert the current color to the RGB color space (integer values between 0 and 255).
to_rgba()Convert the current color to the RGBA color space (float values between 0 and 1).
Convert the current color to the RGBA color space (integer values between 0 and 255).
to_yiq()Convert the current color to the YIQ color space (used for TV broadcasting).
Attributes
- COLOR_CONVERSIONS = {'cmyk': [('rgb', <function cmyk_to_rgb>)], 'hex': [('name', <function hex_to_name>), ('rgb255', <function hex_to_rgb255>), ('hexa', <function hex_to_hexa>)], 'hexa': [('hex', <function hexa_to_hex>), ('rgba255', <function hexa_to_rgba255>)], 'hls': [('rgb', <function hls_to_rgb>), ('hsl', <function hls_to_hsl>)], 'hsl': [('hls', <function hsl_to_hls>)], 'hsv': [('rgb', <function hsv_to_rgb>)], 'name': [('hex', <function name_to_hex>)], 'rgb': [('rgba', <function rgb_to_rgba>), ('rgb255', <function rgb_to_rgb255>), ('yiq', <function rgb_to_yiq>), ('hls', <function rgb_to_hls>), ('hsv', <function rgb_to_hsv>), ('cmyk', <function rgb_to_cmyk>)], 'rgb255': [('rgb', <function rgb255_to_rgb>), ('hex', <function rgb255_to_hex>)], 'rgba': [('rgb', <function rgba_to_rgb>), ('rgba255', <function rgba_to_rgba255>)], 'rgba255': [('rgba', <function rgba255_to_rgba>), ('hexa', <function rgba255_to_hexa>)], 'yiq': [('rgb', <function yiq_to_rgb>)]}#
- NAMED_COLORS = {'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff', 'aquamarine': '#7fffd4', 'azure': '#f0ffff', 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000', 'blanchedalmond': '#ffebcd', 'blue': '#0000ff', 'blueviolet': '#8a2be2', 'brown': '#a52a2a', 'burlywood': '#deb887', 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e', 'coral': '#ff7f50', 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc', 'crimson': '#dc143c', 'cyan': '#00ffff', 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b', 'darkgray': '#a9a9a9', 'darkgreen': '#006400', 'darkgrey': '#a9a9a9', 'darkkhaki': '#bdb76b', 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f', 'darkorange': '#ff8c00', 'darkorchid': '#9932cc', 'darkred': '#8b0000', 'darksalmon': '#e9967a', 'darkseagreen': '#8fbc8f', 'darkslateblue': '#483d8b', 'darkslategray': '#2f4f4f', 'darkslategrey': '#2f4f4f', 'darkturquoise': '#00ced1', 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff', 'dimgray': '#696969', 'dimgrey': '#696969', 'dodgerblue': '#1e90ff', 'eigengrau': '#16161d', 'firebrick': '#b22222', 'floralwhite': '#fffaf0', 'forestgreen': '#228b22', 'fuchsia': '#ff00ff', 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff', 'gold': '#ffd700', 'goldenrod': '#daa520', 'gray': '#808080', 'green': '#008000', 'greenyellow': '#adff2f', 'grey': '#808080', 'honeydew': '#f0fff0', 'hotpink': '#ff69b4', 'indianred': '#cd5c5c', 'indigo': '#4b0082', 'ivory': '#fffff0', 'khaki': '#f0e68c', 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00', 'lemonchiffon': '#fffacd', 'lightblue': '#add8e6', 'lightcoral': '#f08080', 'lightcyan': '#e0ffff', 'lightgoldenrodyellow': '#fafad2', 'lightgray': '#d3d3d3', 'lightgreen': '#90ee90', 'lightgrey': '#d3d3d3', 'lightpink': '#ffb6c1', 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa', 'lightskyblue': '#87cefa', 'lightslategray': '#778899', 'lightslategrey': '#778899', 'lightsteelblue': '#b0c4de', 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32', 'linen': '#faf0e6', 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa', 'mediumblue': '#0000cd', 'mediumorchid': '#ba55d3', 'mediumpurple': '#9370db', 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee', 'mediumspringgreen': '#00fa9a', 'mediumturquoise': '#48d1cc', 'mediumvioletred': '#c71585', 'midnightblue': '#191970', 'mintcream': '#f5fffa', 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5', 'navajowhite': '#ffdead', 'navy': '#000080', 'oldlace': '#fdf5e6', 'olive': '#808000', 'olivedrab': '#6b8e23', 'orange': '#ffa500', 'orangered': '#ff4500', 'orchid': '#da70d6', 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee', 'palevioletred': '#db7093', 'papayawhip': '#ffefd5', 'peachpuff': '#ffdab9', 'peru': '#cd853f', 'pink': '#ffc0cb', 'plum': '#dda0dd', 'powderblue': '#b0e0e6', 'purple': '#800080', 'red': '#ff0000', 'rosybrown': '#bc8f8f', 'royalblue': '#4169e1', 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460', 'seagreen': '#2e8b57', 'seashell': '#fff5ee', 'sienna': '#a0522d', 'silver': '#c0c0c0', 'skyblue': '#87ceeb', 'slateblue': '#6a5acd', 'slategray': '#708090', 'slategrey': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f', 'steelblue': '#4682b4', 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347', 'turquoise': '#40e0d0', 'violet': '#ee82ee', 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5', 'yellow': '#ffff00', 'yellowgreen': '#9acd32'}#
- classmethod batch_register_named_colors(colors: dict) None[source]#
Register multiple named colors at once.
- classmethod register_conversion(from_space: str, to_space: str, func: Callable | None = None) Callable[source]#
Register a new color conversion function, either by using it as a decorator or by calling it directly with a function.
- Usage:
@Color.register_conversion(“rgb”, “rgba”) def rgb_to_rgba(…): pass
or
Color.register_conversion(“rgb”, “rgba”, rgb_to_rgba)
- classmethod register_named_color(name: str, hex_code: str) None[source]#
Register a new named color.
- to(space: Literal['auto', 'rgb', 'rgba', 'rgb255', 'rgba255', 'hex', 'hexa', 'name', 'hsv', 'cmyk', 'yiq', 'hsl', None] | str) str | Tuple[int, int, int] | Tuple[int, int, int, int] | Tuple[float, float, float] | Tuple[float, float, float, float][source]#
Generic class to get the color in a specific space.
- Parameters:
space (ColorSpace) – The target color space. Can see available options calling
list_spaces().- Returns:
The color in the target space (e.g. An RGB tuple, a hex string, etc).
- Return type:
ColorType
- to_cmyk() Tuple[float, float, float, float][source]#
Convert the current color to the CMYK color space.
- Returns:
A tuple representing the CMYK components of the color.
- Return type:
Example
>>> color = Color("#ff5733") >>> color.to_cmyk() (0.0, 0.66, 0.8, 0.0)
>>> color = Color("yellow") >>> color.to_cmyk() (0.0, 0.0, 1.0, 0.0)
- to_hex() str[source]#
Convert the current color to a hexadecimal string.
- Returns:
A string representing the color in hex format.
- Return type:
Example
>>> color = Color((255, 87, 51)) >>> color.to_hex() '#ff5733'
>>> color = Color("blue") >>> color.to_hex() '#0000ff'
- to_hexa() str[source]#
Convert the current color to a hexadecimal string with alpha (transparency) included.
- Returns:
A string representing the color in hex format, including the alpha value.
- Return type:
Example
>>> color = Color((255, 87, 51, 128)) >>> color.to_hexa() '#ff573380'
>>> color = Color("red") >>> color.to_hexa() '#ff0000ff'
- to_hsl() Tuple[float, float, float][source]#
Convert the current color to the HSL color space (Hue, Saturation, Lightness).
- Returns:
A tuple representing the HSL components of the color.
- Return type:
Example
>>> color = Color("#ff5733") >>> color.to_hsl() (0.033, 1.0, 0.6)
>>> color = Color("blue") >>> color.to_hsl() (0.667, 1.0, 0.5)
- to_hsv() Tuple[float, float, float][source]#
Convert the current color to the HSV color space.
- Returns:
A tuple representing the HSV components of the color.
- Return type:
Example
>>> color = Color("#ff5733") >>> color.to_hsv() (0.033, 0.8, 1.0)
>>> color = Color("purple") >>> color.to_hsv() (0.833, 1.0, 0.502)
- to_name() str[source]#
Convert the current color to a named color, if available.
- Returns:
A string representing the color name, if it matches one of the known color names.
- Return type:
- Raises:
ValueError – If no matching color name is found.
Example
>>> color = Color("#ff0000") >>> color.to_name() 'red'
>>> color = Color("green") >>> color.to_name() 'green'
- to_rgb() Tuple[float, float, float][source]#
Convert the current color to the RGB color space (float values between 0 and 1).
- Returns:
A tuple representing the RGB components of the color.
- Return type:
Example
>>> color = Color("#ff5733") >>> color.to_rgb() (1.0, 0.341, 0.2)
>>> color = Color("red") >>> color.to_rgb() (1.0, 0.0, 0.0)
- to_rgb255() Tuple[int, int, int][source]#
Convert the current color to the RGB color space (integer values between 0 and 255).
- Returns:
A tuple representing the RGB components of the color in integer form.
- Return type:
Example
>>> color = Color("#ff5733") >>> color.to_rgb255() (255, 87, 51)
>>> color = Color("blue") >>> color.to_rgb255() (0, 0, 255)
- to_rgba() Tuple[float, float, float, float][source]#
Convert the current color to the RGBA color space (float values between 0 and 1).
- Returns:
A tuple representing the RGBA components of the color, with the alpha channel.
- Return type:
Example
>>> color = Color("#ff573380") >>> color.to_rgba() (1.0, 0.341, 0.2, 0.5)
>>> color = Color("green") >>> color.to_rgba() (0.0, 1.0, 0.0, 1.0)
- to_rgba255() Tuple[int, int, int, int][source]#
Convert the current color to the RGBA color space (integer values between 0 and 255).
- Returns:
A tuple representing the RGBA components of the color in integer form.
- Return type:
Example
>>> color = Color("#ff573380") >>> color.to_rgba255() (255, 87, 51, 128)
>>> color = Color("red") >>> color.to_rgba255() (255, 0, 0, 255)
- to_yiq() Tuple[float, float, float][source]#
Convert the current color to the YIQ color space (used for TV broadcasting).
- Returns:
A tuple representing the YIQ components of the color.
- Return type:
Example
>>> color = Color("#ff5733") >>> color.to_yiq() (0.592, 0.458, 0.079)
>>> color = Color("black") >>> color.to_yiq() (0.0, 0.0, 0.0)