make sure we rotate the final photo properly
This commit is contained in:
parent
b45b4cf4a3
commit
26f0a46ce9
|
@ -22,7 +22,7 @@ import java.io.IOException
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId: Int) : AsyncTask<ByteArray, Void, String>() {
|
class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId: Int, val deviceOrientation: Int) : AsyncTask<ByteArray, Void, String>() {
|
||||||
companion object {
|
companion object {
|
||||||
private val TAG = PhotoProcessor::class.java.simpleName
|
private val TAG = PhotoProcessor::class.java.simpleName
|
||||||
private var mActivity: WeakReference<MainActivity>? = null
|
private var mActivity: WeakReference<MainActivity>? = null
|
||||||
|
@ -66,7 +66,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId
|
||||||
var image = BitmapFactory.decodeByteArray(data, 0, data.size)
|
var image = BitmapFactory.decodeByteArray(data, 0, data.size)
|
||||||
val exif = ExifInterface(photoFile.toString())
|
val exif = ExifInterface(photoFile.toString())
|
||||||
|
|
||||||
val deviceRot = MainActivity.mLastHandledOrientation.compensateDeviceRotation(currCameraId)
|
val deviceRot = deviceOrientation.compensateDeviceRotation(currCameraId)
|
||||||
val previewRot = activity.getPreviewRotation(currCameraId)
|
val previewRot = activity.getPreviewRotation(currCameraId)
|
||||||
val imageRot = when (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED)) {
|
val imageRot = when (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED)) {
|
||||||
ExifInterface.ORIENTATION_ROTATE_90 -> 90
|
ExifInterface.ORIENTATION_ROTATE_90 -> 90
|
||||||
|
@ -97,7 +97,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId
|
||||||
val height = bitmap.height
|
val height = bitmap.height
|
||||||
|
|
||||||
val matrix = Matrix()
|
val matrix = Matrix()
|
||||||
matrix.setRotate(degree.toFloat())
|
matrix.setRotate((degree % 360).toFloat())
|
||||||
return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true)
|
return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@ class Preview : ViewGroup, SurfaceHolder.Callback, MediaScannerConnection.OnScan
|
||||||
private var mLastClickY = 0
|
private var mLastClickY = 0
|
||||||
private var mCurrCameraId = 0
|
private var mCurrCameraId = 0
|
||||||
private var mMaxZoom = 0
|
private var mMaxZoom = 0
|
||||||
|
private var mRotationAtCapture = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(context: Context) : super(context)
|
constructor(context: Context) : super(context)
|
||||||
|
@ -273,6 +274,7 @@ class Preview : ViewGroup, SurfaceHolder.Callback, MediaScannerConnection.OnScan
|
||||||
mCamera!!.enableShutterSound(false)
|
mCamera!!.enableShutterSound(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mRotationAtCapture = MainActivity.mLastHandledOrientation
|
||||||
mCamera!!.parameters = mParameters
|
mCamera!!.parameters = mParameters
|
||||||
mCamera!!.takePicture(null, null, takePictureCallback)
|
mCamera!!.takePicture(null, null, takePictureCallback)
|
||||||
}
|
}
|
||||||
|
@ -288,7 +290,7 @@ class Preview : ViewGroup, SurfaceHolder.Callback, MediaScannerConnection.OnScan
|
||||||
resumePreview()
|
resumePreview()
|
||||||
}
|
}
|
||||||
|
|
||||||
PhotoProcessor(mActivity, mTargetUri, mCurrCameraId).execute(data)
|
PhotoProcessor(mActivity, mTargetUri, mCurrCameraId, mRotationAtCapture).execute(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun resumePreview() {
|
private fun resumePreview() {
|
||||||
|
|
Loading…
Reference in New Issue