diff --git a/app/build.gradle b/app/build.gradle index 53393047..a6ce25ee 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,7 +32,7 @@ android { } dependencies { - compile 'com.simplemobiletools:commons:2.13.9' + compile 'com.simplemobiletools:commons:2.14.6' 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 0713e3b8..b150795f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt @@ -1,12 +1,18 @@ package com.simplemobiletools.camera +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Matrix +import android.media.ExifInterface import android.net.Uri import android.os.AsyncTask import android.os.Environment import android.util.Log import com.simplemobiletools.camera.Preview.Companion.config import com.simplemobiletools.camera.activities.MainActivity +import com.simplemobiletools.camera.extensions.compensateDeviceRotation import com.simplemobiletools.camera.extensions.getOutputMediaFile +import com.simplemobiletools.camera.extensions.getPreviewRotation import com.simplemobiletools.commons.extensions.getFileDocument import com.simplemobiletools.commons.extensions.needsStupidWritePermissions import com.simplemobiletools.commons.extensions.toast @@ -16,7 +22,7 @@ import java.io.IOException import java.io.OutputStream import java.lang.ref.WeakReference -class PhotoProcessor(val activity: MainActivity, val uri: Uri?) : AsyncTask() { +class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId: Int) : AsyncTask() { companion object { private val TAG = PhotoProcessor::class.java.simpleName private var mActivity: WeakReference? = null @@ -40,6 +46,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?) : AsyncTask 90 + ExifInterface.ORIENTATION_ROTATE_180 -> 180 + ExifInterface.ORIENTATION_ROTATE_270 -> 270 + else -> 0 + } + + image = rotate(image, imageRot + deviceRot + previewRot) + image.compress(Bitmap.CompressFormat.JPEG, 80, fos) fos?.close() return photoFile.absolutePath } catch (e: Exception) { @@ -73,8 +92,18 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?) : AsyncTask 90 Surface.ROTATION_180 -> 180 Surface.ROTATION_270 -> 270 diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/extensions/int.kt b/app/src/main/kotlin/com/simplemobiletools/camera/extensions/int.kt index 12bcf39b..47b1a40c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/extensions/int.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/extensions/int.kt @@ -7,9 +7,12 @@ import com.simplemobiletools.camera.ORIENT_LANDSCAPE_RIGHT fun Int.compensateDeviceRotation(currCameraId: Int): Int { val isFrontCamera = currCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT return if (this == ORIENT_LANDSCAPE_LEFT) { - if (isFrontCamera) 90 else 270 + 270 } else if (this == ORIENT_LANDSCAPE_RIGHT) { - if (isFrontCamera) 270 else 90 - } else + 90 + } else if (isFrontCamera) { + 180 + } else { 0 + } }