Существует 2 способа отправки Bitmap
из одного действия в другое.
ByteArray.
Создайте byteArray для растрового изображения и отправьте его через Intent.
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, bStream);
byte[] byteArray = bStream.toByteArray();
Intent anotherIntent = new Intent(this, anotherActivity.class);
anotherIntent.putExtra("image", byteArray);
startActivity(anotherIntent);
В других ваших действиях,
Bitmap bmp;
byte[] byteArray = getIntent().getByteArrayExtra("image");
bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
Примечание. Этот метод не идеален, поскольку существует ограничение в 1 МБ данных, которые вы можете передать в Intent.Поэтому, если объем данных превышает 1 МБ, произойдет сбой.
Существует более безопасный способ.
Uri / File
1 Сохраните растровое изображение как изображение в кэш-памяти вашего приложения.каталог.Это даст вам Uri
файла.Передайте этот Uri через Intent.
val file = File(context.filesDir, name)
context.openFileOutput(file.name, Context.MODE_PRIVATE).use {
it.write(bStream.toByteArray())
}
Теперь вы можете передать name
через Intent.
2 В своем следующем упражнении получите Uri из Intent и загрузите Bitmap.
val file = File(context.filesDir, name)
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(file, options);
Это более безопасный способ передачи растрового изображения из одного действия в другое.