Skip to content
This repository has been archived by the owner on May 6, 2024. It is now read-only.

Commit

Permalink
Merge pull request #942 from edx/farhan/MA-3175-3
Browse files Browse the repository at this point in the history
MA-3175, Mitigate out of memory issue for low memory devices.
  • Loading branch information
farhan committed Apr 13, 2017
2 parents 35337c4 + 92b8a84 commit d08df5c
Showing 1 changed file with 17 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class ImageUtils {
*/
@Nullable
public static Uri rotateImageAccordingToExifTag(@NonNull Context context, @NonNull Uri imageUri) {
System.gc();
final String imagePath = imageUri.getPath().toString();
final int requiredRotation = CropUtil.getOrientationFromUri(imagePath);

Expand All @@ -53,17 +54,29 @@ public static Uri rotateImageAccordingToExifTag(@NonNull Context context, @NonNu
return null;
}

Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
final Matrix matrix = new Matrix();
matrix.postRotate(requiredRotation);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeFile(imagePath);
final Matrix matrix = new Matrix();
matrix.postRotate(requiredRotation);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
} catch (OutOfMemoryError e) {
// Catch memory error for low memory devices and return null in fallback scenario
logger.error(e);
if (bitmap != null) {
bitmap.recycle();
}
return null;
}

final FileOutputStream fileOutputStream;
try {
fileOutputStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
bitmap.recycle();
System.gc();
return Uri.fromFile(file);
} catch (IOException e) {
logger.error(e);
Expand Down

0 comments on commit d08df5c

Please sign in to comment.