def snap_to_grid(src, ref): src = colour.palette(src) ref = colour.palette(ref) utils = colour.utils(ref) results = {} for hex, details in src.colours.items(): closest = utils.closest_colour(hex) results[hex] = closest return results
def draw(palette, image): palette = colour.palette(palette) utils = colour.utils(palette) results = {} im = Image.open(image) for y in range(im.size[1]): for x in range(im.size[0]): old = im.getpixel((x, y)) hex = webcolors.rgb_to_hex(old) closest = utils.closest_colour(hex) new = webcolors.hex_to_rgb(closest[0]) im.putpixel((x, y), new) return im
x = 0 y = height / 2.0 for hex in colours: rgb = webcolors.hex_to_rgb(hex) canvas.line((x, y, x + dx, y), width=height, fill=rgb) canvas.text((x + 10, 10), hex, fill=(255,255,255)) x += dx return im if __name__ == '__main__': import sys palette = sys.argv[1] palette = colour.palette(palette) colours = palette.sort_colours() im = make_rainbow(colours, 1024, 400) if len(sys.argv) == 3: im.save(sys.argv[2]) else: im.show()
#!/usr/bin/env python import colour import sys first = sys.argv[1] rest = sys.argv[2:] p1 = colour.palette(first) p2 = None for next in rest: p2 = colour.palette(next) p1.merge(p2) p1.dump()