summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Leon Scroggins III <scroggo@google.com> 2019-10-16 16:42:32 -0400
committer Leon Scroggins <scroggo@google.com> 2019-10-17 14:22:48 +0000
commit6e07e16397d0e2afb75780310d07bc6565b45a40 (patch)
tree709b0715cae758a4587eb250e53bc1fea6b3f6c4
parenta3b702fa84b258f4bfa456223c2e02aca76de01b (diff)
Fix scaling + cropping in ImageDecoder
Bug: 141735646 Test: I9ab9115ee4cbc74549f7b914d99b667c700199d5 When using a subset, do not change desiredWidth/desiredHeight, which changes the scale used below. Instead, just change the size of the SkBitmap, so it looks correct. Change-Id: Ie9682afb9324bcdfc81f1d9664f9fcc3891f8939
-rw-r--r--core/jni/android/graphics/ImageDecoder.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/core/jni/android/graphics/ImageDecoder.cpp b/core/jni/android/graphics/ImageDecoder.cpp
index ec91cbf854a6..4d907f6d4942 100644
--- a/core/jni/android/graphics/ImageDecoder.cpp
+++ b/core/jni/android/graphics/ImageDecoder.cpp
@@ -374,16 +374,17 @@ static jobject ImageDecoder_nDecodeBitmap(JNIEnv* env, jobject /*clazz*/, jlong
if (scale || jsubset) {
int translateX = 0;
int translateY = 0;
+ SkImageInfo scaledInfo;
if (jsubset) {
SkIRect subset;
GraphicsJNI::jrect_to_irect(env, jsubset, &subset);
- translateX = -subset.fLeft;
- translateY = -subset.fTop;
- desiredWidth = subset.width();
- desiredHeight = subset.height();
+ translateX = -subset.fLeft;
+ translateY = -subset.fTop;
+ scaledInfo = bitmapInfo.makeWH(subset.width(), subset.height());
+ } else {
+ scaledInfo = bitmapInfo.makeWH(desiredWidth, desiredHeight);
}
- SkImageInfo scaledInfo = bitmapInfo.makeWH(desiredWidth, desiredHeight);
SkBitmap scaledBm;
if (!scaledBm.setInfo(scaledInfo)) {
doThrowIOE(env, "Failed scaled setInfo");