在安卓中将图像传递给PutExtra

3
我希望能够将我在Button中设置的背景图片通过intent对象传递到另一个类中,使用PutExtra()方法进行传递。
请问是否有人知道如何实现这一功能?
谢谢, davidbrown
6个回答

10

发件人活动:

Bitmap bitmap = BitmapFactory.decodeResource
                (getResources(), R.drawable.sticky_notes); // your bitmap
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bs);
        intent.putExtra("byteArray", bs.toByteArray());

接收者活动:

 if(getIntent().hasExtra("byteArray")) {
            ImageView imv= new ImageView(this);
            Bitmap bitmap = BitmapFactory.decodeByteArray(
                    getIntent().getByteArrayExtra("byteArray"), 0, getIntent().getByteArrayExtra("byteArray").length);
            imv.setImageBitmap(bitmap);
          }

2

Intent只能保存40 kbytes的信息。如果你能将图像压缩为小于40 kbytes,那么你可以将它放入extras中。


1
intent.putExtra("imageData", bitmap)

更好的方法是创建一个链接,而不是直接传递位图。
intent.putExtra("image_url",R.drawable.image);

1

试试这个...

首先将图像转换为位图。

Bitmap tileImage = BitmapFactory.decodeResource(getResources(), R.drawable.floore);

将其转换为字节数组。

 ByteArrayOutputStream stream = new ByteArrayOutputStream();
      photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
      byte[] byteArray = stream.toByteArray();

      Bundle b = new Bundle();
      b.putByteArray("camara",byteArray);

      Intent intent3 = new Intent(this,Second.class);
      intent3.putExtras(b);
      startActivity(intent3);          

0

如果您确定不会从内存中删除Bitmap(换句话说,不要像那样存储位图),则可以传递Bitmap(因为它实现了Parcelable)。

Bitmap本身只是本地资源的一个小Java包装器,因此它不会占用太多空间。


0

传递大文件时要小心,例如照片或图库文件。即使压缩,大小可能超过putExtra的可接受限制。我建议发送图像链接或来自图库的文件路径。在我的应用程序中,我总是尽可能压缩我的文件,但总有一个会导致应用程序崩溃。

Intent intent = new Intent(getActivity(), PhotoViewActivity.class);
intent.putExtra("url", url);
//OR file path
intent.putExtra("path", path);
startActivityForResult(intent,PHOTO_VIEW_REQUEST);

在这种情况下,在PhotoViewActivity上。
    String url = getIntent().getStringExtra("url");
    String path = getIntent().getStringExtra("path");
    if(url != null && !url.isEmpty()){
        //Get using Picasso or other framework
    }else if(path != null && !path.isEmpty()){
        //In my case I transform in Bitmap
        //see this link for more detail : https://dev59.com/xWQn5IYBdhLWcg3we3AE

    }else{
        //Throw exception and close activity
    }

如何在位图中转换路径: 从文件路径创建位图/可绘制对象

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接