summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/callcomposer/util/BitmapResizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/callcomposer/util/BitmapResizer.java')
-rw-r--r--java/com/android/dialer/callcomposer/util/BitmapResizer.java35
1 files changed, 20 insertions, 15 deletions
diff --git a/java/com/android/dialer/callcomposer/util/BitmapResizer.java b/java/com/android/dialer/callcomposer/util/BitmapResizer.java
index 658462def..84ada51d8 100644
--- a/java/com/android/dialer/callcomposer/util/BitmapResizer.java
+++ b/java/com/android/dialer/callcomposer/util/BitmapResizer.java
@@ -17,6 +17,7 @@
package com.android.dialer.callcomposer.util;
import android.graphics.Bitmap;
+import android.graphics.Matrix;
import android.support.annotation.VisibleForTesting;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -28,40 +29,44 @@ public final class BitmapResizer {
/**
* Returns a bitmap that is a resized version of the parameter image. The image will only be
* resized down and sized to be appropriate for an enriched call.
+ *
+ * @param image to be resized
+ * @param rotation degrees to rotate the image clockwise
+ * @return resized image
*/
- public static Bitmap resizeForEnrichedCalling(Bitmap image) {
+ public static Bitmap resizeForEnrichedCalling(Bitmap image, int rotation) {
Assert.isWorkerThread();
int width = image.getWidth();
int height = image.getHeight();
+ Matrix matrix = new Matrix();
+ matrix.postRotate(rotation);
+
LogUtil.i(
"BitmapResizer.resizeForEnrichedCalling", "starting height: %d, width: %d", height, width);
if (width <= MAX_OUTPUT_RESOLUTION && height <= MAX_OUTPUT_RESOLUTION) {
LogUtil.i("BitmapResizer.resizeForEnrichedCalling", "no resizing needed");
- return image;
+ return Bitmap.createBitmap(image, 0, 0, width, height, matrix, true);
}
+ float ratio = 1;
if (width > height) {
// landscape
- float ratio = width / (float) MAX_OUTPUT_RESOLUTION;
- width = MAX_OUTPUT_RESOLUTION;
- height = (int) (height / ratio);
- } else if (height > width) {
- // portrait
- float ratio = height / (float) MAX_OUTPUT_RESOLUTION;
- height = MAX_OUTPUT_RESOLUTION;
- width = (int) (width / ratio);
+ ratio = MAX_OUTPUT_RESOLUTION / (float) width;
} else {
- // square
- height = MAX_OUTPUT_RESOLUTION;
- width = MAX_OUTPUT_RESOLUTION;
+ // portrait & square
+ ratio = MAX_OUTPUT_RESOLUTION / (float) height;
}
LogUtil.i(
- "BitmapResizer.resizeForEnrichedCalling", "ending height: %d, width: %d", height, width);
+ "BitmapResizer.resizeForEnrichedCalling",
+ "ending height: %f, width: %f",
+ height * ratio,
+ width * ratio);
- return Bitmap.createScaledBitmap(image, width, height, true);
+ matrix.postScale(ratio, ratio);
+ return Bitmap.createBitmap(image, 0, 0, width, height, matrix, true);
}
}