quantize function
Quantizes an image's colors using the Median Cut Algorithm.
Implementation
ColorMap? quantize(List<List<int>> pixels, int maxColors) {
if (pixels.isEmpty || maxColors < 2) return null;
var vbox = ColorVolumeBox.fromPixels(pixels);
var pq = PriorityQueue<ColorVolumeBox>(
(a, b) => b.pixelCount.compareTo(a.pixelCount),
);
pq.push(vbox);
while (pq.length < maxColors && pq.length > 0) {
var vbox = pq.pop();
if (vbox.pixelCount == 0) continue;
var (vbox1, vbox2) = vbox.split();
pq.push(vbox1);
if (vbox2 != null) pq.push(vbox2);
}
return ColorMap(pq._contents.map((vbox) => vbox.averageColor).toList());
}