如何将位图传输到另一个活动?

时间:2018-05-04 13:39:18

标签: android

当我使用camera2 api捕获时,会生成图像并将图像传输到位图旁边的字节。我的目的是在捕获后选择是否保存。 因此,在按下保存btn之前,它不会在文件中生成。

下面是<发送方

    Bitmap bitmap = textureView.getBitmap();
    ByteArrayOutputStream bs = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,bs);
    byte[] byteArray = bs.toByteArray();
下面是:接受方

    byte[] byteArray = getIntent().getByteArrayExtra("byteArray");
    bitmap = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
    resultView.setImageBitmap(bitmap);

我收到了如下错误

android.os.TransactionTooLargeException

我理解错误的原因但我想将图像转移到另一个活动 有人帮忙吗?

2 个答案:

答案 0 :(得分:2)

将您的位图对象放在Intent.putExtra("key", object)

intent.putExtra("btimap", bitmap);

使用Intent.getParcelableExtra("key")

获取它
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("btimap");

答案 1 :(得分:1)

在将其添加到intent,将其发送并解码之前将其转换为Byte数组。

//Convert to byte array
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

Intent in1 = new Intent(this, Activity2.class);
in1.putExtra("image",byteArray);


    然后在活动2中:

byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);