@thi.ng/pixel-dominant-colors
Version:
k-means based dominant color extraction from images/pixel buffers
21 lines (20 loc) • 632 B
JavaScript
import { kmeans } from "@thi.ng/k-means/kmeans";
const dominantColors = (img, num, opts) => {
const samples = [];
const filter = opts?.filter || (() => true);
let i = 0;
for (let p of img) {
if (filter(p, i)) samples.push(p);
i++;
}
return samples.length ? dominantColorsArray(num, samples, opts) : [];
};
const dominantColorsArray = (num, samples, opts) => kmeans(Math.min(num, samples.length), samples, opts).sort((a, b) => b.items.length - a.items.length).map((c) => ({
color: [...c.centroid],
area: c.items.length / samples.length,
ids: c.items
}));
export {
dominantColors,
dominantColorsArray
};