Compressor icon indicating copy to clipboard operation
Compressor copied to clipboard

Image taken from front camera gets Rotated after compression

Open imdineshsingh opened this issue 4 years ago • 2 comments

I am getting issue, when Image is taken from front camera it gets Rotated after compression,

imdineshsingh avatar Apr 05 '22 06:04 imdineshsingh

Hello! Sorry i don't use kotlin so this may be unhelpful but in Python, upon performing something similar, the photo had exif rotation data. You can either get rid of that rotation data or better yet, just utilize that date so your device actually knows what the "Right side up" is.

Here is the Python code after opening it with PIL: ImageOps.exif_transpose(img)

Hope this helps and there is a Kotlin equivalent

TrainedPro avatar Aug 13 '22 08:08 TrainedPro

I am getting issue, when Image is taken from front camera it gets Rotated after compression,

You can add this code to your own class, call the function and save bitmap to file after get rotated image.

   private fun getRotateImage(photoPath: String?, bitmap: Bitmap): Bitmap? {
        val ei = ExifInterface(
            photoPath!!
        )
        val orientation = ei.getAttributeInt(
            ExifInterface.TAG_ORIENTATION,
            ExifInterface.ORIENTATION_UNDEFINED
        )
        val rotatedBitmap: Bitmap? = when (orientation) {
            ExifInterface.ORIENTATION_ROTATE_90 -> rotateImage(bitmap, 90f)
            ExifInterface.ORIENTATION_ROTATE_180 -> rotateImage(bitmap, 180f)
            ExifInterface.ORIENTATION_ROTATE_270 -> rotateImage(bitmap, 270f)
            ExifInterface.ORIENTATION_NORMAL -> bitmap
            else -> bitmap
        }
        return rotatedBitmap
    }

    private fun rotateImage(source: Bitmap, angle: Float): Bitmap? {
        val matrix = Matrix()
        matrix.postRotate(angle)
        return Bitmap.createBitmap(
            source, 0, 0, source.width, source.height,
            matrix, true
        )
    }

    val bitmap: Bitmap = MediaStore.Images.Media.getBitmap(contentResolver, uri)
    val rotatedImage = CheckRotatedImage.getRotateImage(filePathReal, bitmap)`

ricodidan avatar Feb 01 '23 03:02 ricodidan