Authors: | Mike Spindel |
---|---|
Version: | 0.2 |
Palette makes it easy to perform simple operations on colors and to convert between different color systems and representations.
Initialize a color object using whatever representation is convenient:
>>> c = Color("#0a0bcc") >>> c = Color.from_rgb(255, 255, 255, a=0.5) >>> c = Color(hls=(0.2, 0.1, 0.1))
Manipulate colors:
>>> a = Color("#aaaa00") >>> a.lighter() >>> a.darker(amt=0.4)
Measure Colors:
>>> a = Color("#aaaa00") >>> b = Color("#000000") >>> a.w3_contrast_ratio(b) >>> a.w3_contrast_test(b) >>> a.luminance
Convert Representations:
>>> a = Color("#aaaa00") >>> a.rgb8.r 170 >>> a.rgb8.r = 30 >>> tuple(a.rgb8) (30.0, 170.0, 0.0) >>> tuple(a.hls) (0.30392156862745096, 0.3333333333333333, 1.0) >>> str(a.hls) 'hls(0.30392156862745096, 0.3333333333333333, 1.0)' >>> a.hex '#1eaa00' >>> a.css 'rgb(170, 170, 0)'
Convert sRGB:
>>> a = Color("#aaaa00") >>> a.workspace "srgb" >>> a.rgb == a.srgb True >>> a.linear_rgb {'r': 0.4019777798321958, 'b': 0.0, 'g': 0.4019777798321958} >>> a.linear_rgb = (.2, .3, .3) >>> a.rgb (0.48452920448170694, 0.5838314900602575, 0.5838314900602575)
There already exist several good python libraries for manipulating color. Perhaps the two most notable are Grapefruit and python-colormath. Palette hopes to fill a niche somewhere between the two.
With respect to grapefruit, palette intends to have:
- a simpler interface for common tasks
- more sophistication with respect to RGB working spaces, illuminants, etc.
- PEP-8 compliance
With respect to python-colormath, palette intends to have:
- a simpler interface for common tasks; potentially at the expense of deep support for non-RGB colors.
- more utilities that are primarily useful for web development
- support for fewer colorspaces. Palette isn't particularly interested in completionism.
- no dependency on numpy