diff --git a/app/build.gradle b/app/build.gradle index b1829492..96c48c50 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,7 +32,7 @@ android { } dependencies { - compile 'com.simplemobiletools:commons:2.21.11' + compile 'com.simplemobiletools:commons:2.21.12' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt b/app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt index 1dc07b41..cc3e5b1c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt @@ -75,7 +75,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId else -> 0 } - image = rotate(image, imageRot + deviceRot + previewRot) + image = rotate(image, imageRot + deviceRot + previewRot) ?: return "" image.compress(Bitmap.CompressFormat.JPEG, 80, fos) fos?.close() return photoFile.absolutePath @@ -92,13 +92,21 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId return "" } - private fun rotate(bitmap: Bitmap, degree: Int): Bitmap { + private fun rotate(bitmap: Bitmap, degree: Int): Bitmap? { val width = bitmap.width val height = bitmap.height val matrix = Matrix() matrix.setRotate((degree % 360).toFloat()) - return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true) + try { + return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true) + } catch (e: OutOfMemoryError) { + Log.e(TAG, "PhotoProcessor rotate OutOfMemoryError $e") + activity.runOnUiThread { + activity.toast(R.string.photo_not_saved) + } + } + return null } override fun onPostExecute(path: String) {