UNPKG

@thi.ng/pixel-dominant-colors

Version:

k-means based dominant color extraction from images/pixel buffers

21 lines (20 loc) 632 B
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 };