1

可能重复:
将图像从一个活动传递到另一个活动

我的应用程序使用以下逻辑:在活动 A 中单击按钮启动手机摄像头,拍摄照片/视频后(用户在摄像头窗口中按下“保存”)活动 B 启动。该活动 B 包含拍摄的照片/视频的预览以及通过 http 请求上传媒体数据的可能性。我不确定如何将拍摄的图像/视频传递给活动 B.. 我无法在活动 A 中使用 StartActivityForResult 启动相机,因为结果必须传递给活动 B。有什么想法吗?

4

2 回答 2

2

有 3 个解决方案可以解决此问题。

1)首先将图像转换为字节数组,然后传递到意图,并在下一个活动中从捆绑中获取字节数组并转换为图像(位图)并设置为ImageView。

将位图转换为字节数组:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

将字节数组传递给意图:-

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

从 Bundle 中获取字节数组并转换为位图图像:-

Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

2)首先将图像保存到 SDCard 中,然后在下一个活动中将此图像设置为 ImageView。

3) 将位图传递给 Intent 并从捆绑包中获取下一个活动中的位图,但问题是如果您的位图/图像大小当时很大,则图像不会在下一个活动中加载。

于 2012-12-12T11:59:03.460 回答
0

一:首先将图像保存到 SDCard 中,然后在下一个活动中将此图像设置为 ImageView。

二:您也可以保存到字节数组中并将其传递给下一个活动:

    Intent A1 = new Intent(this, NextActivity.class);
    A1.putExtra("pic", byteArray);
    startActivity(A1);

然后在第二个意图中从 Bundle 中获取字节数组并转换为位图图像。

于 2012-12-12T10:49:36.780 回答