如何通过Intent传输图像?

时间:2015-12-25 23:17:27

标签: java android android-intent

我通过API连接到相机。当一个功能

camera.takePicture(null, null, new Camera.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

返回byte []数据的数组。如果我理解正确,这是我们的照片。如何通过Intent传递这个字节数组并将结果图像设置为Activiti?

3 个答案:

答案 0 :(得分:1)

你可以尝试:

Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data.length());

然后假设您要传递的数据实现Serializable(它应该),将其传递给Intent应该如下所示: 来自一项活动:

i.putExtra("image", bitmap);
startActivity(i);

进入下一个下一个活动:

Intent i = getIntent();
Bitmap data = (Bitmap)i.getSerializableExtra("image");

答案 1 :(得分:1)

我以这种方式成功 第一部分

public void takePicture(View view) {
    camera.takePicture(null, null, new Camera.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Intent intent = new Intent(context, AcceptNotAccept.class);
            intent.putExtra("picture", data);
            startActivity(intent);
        }
    }
}

然后得到了这个意图

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_accept_not_accept);

    Bundle extras = getIntent().getExtras();
    byte[] byteArray = extras.getByteArray("picture");
    bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

    ((ImageView)findViewById(R.id.ivForAcceptPicture)).setImageBitmap(bitmap);
}

答案 2 :(得分:0)

这里的想法是将图像保存到外部/内部存储器中(首选:外部像SD)并使用图像的完整路径,例如。

Intent i = new Intent(...);
i.putExtra("myimage","path://example.path/image.jpg");
startActivity(i);

接收活动可以通过调用其路径来获取图像:

String imagePath =  getIntent().getStringExtra("myimage");