Merge "Use less clusters for color extraction for small bitmaps" into udc-dev

This commit is contained in:
Aurélien Pomini
2023-05-01 16:18:58 +00:00
committed by Android (Google) Code Review

View File

@@ -213,9 +213,17 @@ public final class WallpaperColors implements Parcelable {
.resizeBitmapArea(MAX_WALLPAPER_EXTRACTION_AREA)
.generate();
} else {
// in any case, always use between 5 and 128 clusters
int minClusters = 5;
int maxClusters = 128;
// if the bitmap is very small, use bitmapArea/16 clusters instead of 128
int minPixelsPerCluster = 16;
int numberOfColors = Math.max(minClusters,
Math.min(maxClusters, bitmapArea / minPixelsPerCluster));
palette = Palette
.from(bitmap, new CelebiQuantizer())
.maximumColorCount(128)
.maximumColorCount(numberOfColors)
.resizeBitmapArea(MAX_WALLPAPER_EXTRACTION_AREA)
.generate();
}