colors: Use kmeans to generate a palette.

This commit is contained in:
Dylan Araps 2017-12-28 17:32:15 +11:00
parent 4f7dc74b13
commit 38c677248b

View File

@ -19,13 +19,10 @@ def sort_colors(img, colors):
we will later save in json format.""" we will later save in json format."""
raw_colors = [colors[0], *colors[8:], *colors[8:]] raw_colors = [colors[0], *colors[8:], *colors[8:]]
# Darken the background color if it's too light.
# The value can be a letter or an int so we treat the
# entire test as strings.
raw_colors[0] = util.darken_color(raw_colors[0], 0.25) raw_colors[0] = util.darken_color(raw_colors[0], 0.25)
# Create a comment color from the background.
raw_colors[8] = util.lighten_color(raw_colors[0], 0.40) raw_colors[8] = util.lighten_color(raw_colors[0], 0.40)
raw_colors[7] = util.lighten_color(raw_colors[7], 0.25)
raw_colors[15] = util.lighten_color(raw_colors[15], 0.25)
colors = {} colors = {}
colors["wallpaper"] = img colors["wallpaper"] = img
@ -62,7 +59,7 @@ def kmeans(img, color_count):
minit="points") minit="points")
counts = numpy.unique(labels, return_counts=True)[1] counts = numpy.unique(labels, return_counts=True)[1]
best_centroid = numpy.argsort(counts)[::-1] best_centroid = numpy.argsort(counts)
colors = centroids[best_centroid].astype(int) colors = centroids[best_centroid].astype(int)
colors = colors.tolist() colors = colors.tolist()