Merge "Prevent LocalImageResolver from upscaling images" into tm-dev am: e02f9e390d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17884323

Change-Id: I233a4a36b95aa9cd5a51bed8f4d2efcb54f52dc8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jernej Virag
2022-04-21 14:33:31 +00:00
committed by Automerger Merge Worker
2 changed files with 16 additions and 0 deletions

View File

@@ -198,6 +198,11 @@ public class LocalImageResolver {
}
final Size size = info.getSize();
if (size.getWidth() <= maxWidth && size.getHeight() <= maxHeight) {
// We don't want to upscale images needlessly.
return;
}
if (size.getWidth() > size.getHeight()) {
if (size.getWidth() > maxWidth) {
final int targetHeight = size.getHeight() * maxWidth / size.getWidth();

View File

@@ -194,6 +194,17 @@ public class LocalImageResolverTest {
assertThat(bd.getBitmap().getHeight()).isGreaterThan(51);
}
@Test
public void resolveImage_smallBitmapIcon_passedSmallerSize_dontResize() {
Icon icon = Icon.createWithResource(mContext.getResources(), R.drawable.test32x24);
Drawable d = LocalImageResolver.resolveImage(icon, mContext, 600, 450);
assertThat(d).isInstanceOf(BitmapDrawable.class);
BitmapDrawable bd = (BitmapDrawable) d;
assertThat(bd.getBitmap().getWidth()).isEqualTo(32);
assertThat(bd.getBitmap().getHeight()).isEqualTo(24);
}
@Test
public void resolveImage_largeBitmapIcon_passedSize_resizeToDefinedSize() {
Icon icon = Icon.createWithBitmap(