передавать растровое изображение между двумя действиями в Kotlin - PullRequest
0 голосов
/ 20 июня 2020

Есть некоторые ответы, использующие java в stackoverflow, но я не могу преобразовать его в код kotlin. Я новичок в kotlin. Скажите, пожалуйста, как передать растровые данные из одного действия в другое с помощью Intent

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Я не рекомендую вам передавать Bitmap как Parcelable, поскольку это может привести к проблемам с памятью и производительностью в зависимости от размера изображения. Я предлагаю вам сохранить растровое изображение в файле с именем "yourimage" во внутренней памяти вашего application, который недоступен другим приложениям.

Сохранение метода растрового изображения

fun createImageFromBitmap(bitmap: Bitmap): String? {
    var fileName: String? = "myImage" //no .png or .jpg needed
    try {
        val bytes = ByteArrayOutputStream()
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
        val fo: FileOutputStream = openFileOutput(fileName, Context.MODE_PRIVATE)
        fo.write(bytes.toByteArray())
        // remember close file output
        fo.close()
    } catch (e: Exception) {
        e.printStackTrace()
        fileName = null
    }
    return fileName
}

При приеме получить изображение в переменную Bitmap

val bitmap = BitmapFactory.decodeStream(
            context
                .openFileInput("yourimage")
        )
1 голос
/ 20 июня 2020

Вам нужно передать растровое изображение в качестве дополнительного аргумента намерения при запуске действия.

val intent = new Intent(this, NewActivity::class.java)
intent.putExtra("BitmapImage", bitmap)
startActivity(intent);

и получить его как:

val bitmap = this.intent?.getParcelableExtra("BitmapImage") as Bitmap

Я просто перевел код Здесь от до kotlin. Вы должны использовать Android Studio для перевода кода Java в Kotlin.

...