diff options
2 files changed, 15 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractor.java b/packages/SystemUI/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractor.java index d37dfb49c5e5..3c9259c233fc 100644 --- a/packages/SystemUI/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractor.java +++ b/packages/SystemUI/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractor.java @@ -51,7 +51,7 @@ public class WallpaperLocalColorExtractor { private Bitmap mMiniBitmap; @VisibleForTesting - static final int SMALL_SIDE = 128; + static final int MINI_BITMAP_MAX_AREA = 112 * 112; private static final String TAG = WallpaperLocalColorExtractor.class.getSimpleName(); private static final @NonNull RectF LOCAL_COLOR_BOUNDS = @@ -326,12 +326,12 @@ public class WallpaperLocalColorExtractor { private Bitmap createMiniBitmap(@NonNull Bitmap bitmap) { Trace.beginSection("WallpaperLocalColorExtractor#createMiniBitmap"); - // if both sides of the image are larger than SMALL_SIDE, downscale the bitmap. - int smallestSide = Math.min(bitmap.getWidth(), bitmap.getHeight()); - float scale = Math.min(1.0f, (float) SMALL_SIDE / smallestSide); + // if the area of the image is greater than MINI_BITMAP_MAX_AREA, downscale the bitmap. + int area = bitmap.getWidth() * bitmap.getHeight(); + double scale = Math.min(1, Math.sqrt((double) MINI_BITMAP_MAX_AREA / area)); Bitmap result = createMiniBitmap(bitmap, - (int) (scale * bitmap.getWidth()), - (int) (scale * bitmap.getHeight())); + Math.max(1, (int) (scale * bitmap.getWidth())), + Math.max(1, (int) (scale * bitmap.getHeight()))); Trace.endSection(); return result; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java index 0eba21ada789..33d09c1be696 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wallpapers/WallpaperLocalColorExtractorTest.java @@ -59,8 +59,8 @@ import java.util.concurrent.Executor; @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper public class WallpaperLocalColorExtractorTest extends SysuiTestCase { - private static final int LOW_BMP_WIDTH = 128; - private static final int LOW_BMP_HEIGHT = 128; + private static final int LOW_BMP_WIDTH = 112; + private static final int LOW_BMP_HEIGHT = 112; private static final int HIGH_BMP_WIDTH = 3000; private static final int HIGH_BMP_HEIGHT = 4000; private static final int VERY_LOW_BMP_WIDTH = 1; @@ -189,7 +189,7 @@ public class WallpaperLocalColorExtractorTest extends SysuiTestCase { /** * Test that for bitmaps of random dimensions, the mini bitmap is always created - * with either a width <= SMALL_SIDE or a height <= SMALL_SIDE + * with an area <= MINI_BITMAP_MAX_AREA */ @Test public void testMiniBitmapCreation() { @@ -203,14 +203,14 @@ public class WallpaperLocalColorExtractorTest extends SysuiTestCase { spyColorExtractor.onBitmapChanged(bitmap); assertThat(mMiniBitmapUpdatedCount).isEqualTo(1); - assertThat(Math.min(mMiniBitmapWidth, mMiniBitmapHeight)) - .isAtMost(WallpaperLocalColorExtractor.SMALL_SIDE); + assertThat(mMiniBitmapWidth * mMiniBitmapHeight) + .isAtMost(WallpaperLocalColorExtractor.MINI_BITMAP_MAX_AREA); } } /** - * Test that for bitmaps with both width and height <= SMALL_SIDE, - * the mini bitmap is always created with both width and height <= SMALL_SIDE + * Test that for bitmaps with both width and height <= LOW_BMP_WIDTH, + * the mini bitmap is always created with an area <= MINI_BITMAP_MAX_AREA */ @Test public void testSmallMiniBitmapCreation() { @@ -224,8 +224,8 @@ public class WallpaperLocalColorExtractorTest extends SysuiTestCase { spyColorExtractor.onBitmapChanged(bitmap); assertThat(mMiniBitmapUpdatedCount).isEqualTo(1); - assertThat(Math.max(mMiniBitmapWidth, mMiniBitmapHeight)) - .isAtMost(WallpaperLocalColorExtractor.SMALL_SIDE); + assertThat(mMiniBitmapWidth * mMiniBitmapHeight) + .isAtMost(WallpaperLocalColorExtractor.MINI_BITMAP_MAX_AREA); } } |