Загрузка растрового изображения в ImageView позволяет вращать показанное изображение - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть следующий код, который создает растровое изображение из заданного пути к файлу изображения:

private fun loadBitmap(filePath: String?): Bitmap {

        val options = BitmapFactory.Options()
        options.inPreferredConfig = Bitmap.Config.ARGB_8888
        return BitmapFactory.decodeFile(filePath, options)
}

Он вызывается в методе onCreateView () моего класса фрагмента:

bitmapOfImage = loadBitmap(args.getString(FILE_PATH))

Растровое изображение bitmapOfImage изменяется определенным образом с помощью RenderScript, а затем оно загружается в ImageView:

// do some modification on the bitmap
// ...

// copy modified pixels to 'bitmapIn'
allocationOut.copyTo(bitmapIn)

// load it into the imageview specified by its ID 'modifiedImage'
binding.modifiedImage.setImageBitmap(bitmapIn)

Итак, я беру изображение с CameraX и файл путь передается в loadBitmap() метод фрагмента обработки изображения, упомянутый выше. Но хотя я беру изображение в портретном режиме, оно показано в альбомной версии.

Вот небольшое изображение, как оно выглядит, когда я снимаю изображение:

enter image description here

Но вот как это выглядит после загрузки растрового изображения в изображение: enter image description here

Как вы можете видеть, изображение кажется повернутым в право. Почему ? Это происходит по умолчанию? Как я могу это исправить? Для полноты, вот мой макет XML, используемый для показа захваченного фото:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/imagecontainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ImageModificationFragment">

        <ImageView
            android:id="@+id/modified_image"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:contentDescription="@string/shows_filtered_image" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
...