UNPKG

@thi.ng/pixel-dominant-colors

Version:

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

20 lines (19 loc) 807 B
import { computeCutWith } from "@thi.ng/k-means/mean-cut"; import { mean, vmean } from "@thi.ng/vectors/mean"; import { vmedian } from "@thi.ng/vectors/median"; import { filterSamples } from "./utils.js"; const dominantColorsMeanCut = (img, num, opts) => __dominantColors(vmean, img, num, opts); const dominantColorsMedianCut = (img, num, opts) => __dominantColors(vmedian, img, num, opts); const __dominantColors = (cut, img, num, opts) => { const samples = opts?.filter ? filterSamples(opts.filter, img) : [...img]; return samples.length ? computeCutWith(cut, samples, samples[0].length, num).sort((a, b) => b.length - a.length).map( (bin) => ({ color: mean([], bin), area: bin.length / samples.length }) ) : []; }; export { dominantColorsMeanCut, dominantColorsMedianCut };