You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/12/06 20:51:20 UTC

git commit: CB-5599 Android: Catch and ignore OutOfMemoryError in getRotatedBitmap()

Updated Branches:
  refs/heads/dev 34e85810c -> 6f4fef847


CB-5599 Android: Catch and ignore OutOfMemoryError in getRotatedBitmap()

getRotatedBitmap() can run out of memory if the image is very large:

http://simonmacdonald.blogspot.ca/2012/07/change-to-camera-code-in-phonegap-190.html

If this happens, simply do not rotate the image and return it unmodified.  If you do not catch the OutOfMemoryError, the Android app crashes.


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/commit/6f4fef84
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/tree/6f4fef84
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/diff/6f4fef84

Branch: refs/heads/dev
Commit: 6f4fef8479d690b9037baa05ab4269f9279e1d80
Parents: 34e8581
Author: Kevin Woram <kw...@spluhdap.com>
Authored: Wed Oct 2 16:58:41 2013 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Fri Dec 6 14:50:59 2013 -0500

----------------------------------------------------------------------
 src/android/CameraLauncher.java | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/blob/6f4fef84/src/android/CameraLauncher.java
----------------------------------------------------------------------
diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java
index ec8222d..0dd247b 100755
--- a/src/android/CameraLauncher.java
+++ b/src/android/CameraLauncher.java
@@ -530,8 +530,20 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
         } else {
             matrix.setRotate(rotate, (float) bitmap.getWidth() / 2, (float) bitmap.getHeight() / 2);
         }
-        bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
-        exif.resetOrientation();
+
+        try
+        {
+            bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
+            exif.resetOrientation();
+        }
+        catch (OutOfMemoryError oom)
+        {
+            // You can run out of memory if the image is very large:
+            // http://simonmacdonald.blogspot.ca/2012/07/change-to-camera-code-in-phonegap-190.html
+            // If this happens, simply do not rotate the image and return it unmodified.
+            // If you do not catch the OutOfMemoryError, the Android app crashes.
+        }
+
         return bitmap;
     }