【问题标题】:Passing the Image in PutExtra in Android在 Android 的 PutExtra 中传递图像
【发布时间】:2012-08-31 06:43:46
【问题描述】:

我想将我在 PutExtra() 中设置为按钮的背景图像与意图对象传递给另一个类。

有人知道怎么做吗?

谢谢 大卫布朗

【问题讨论】:

    标签: android image android-intent


    【解决方案1】:

    发件人活动:

    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 KB。如果您可以压缩小于 40 KB 的图像 - 您可以将其放入附加文件中

      【讨论】:

        【解决方案3】:
        intent.putExtra("imageData", bitmap)
        

        更好的方法是创建链接而不是直接传递位图。

        intent.putExtra("image_url",R.drawable.image);
        

        【讨论】:

          【解决方案4】:

          试试这个...

          首先获取位图中的图像。

          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);          
          

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

              在传递可能非常大的文件时要小心,例如照片或图库文件。即使压缩它,大小也可能超过 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://stackoverflow.com/questions/16804404/create-a-bitmap-drawable-from-file-path
              
                  }else{
                      //Throw exception and close activity
                  }
              

              如何在位图中变换路径: Create a Bitmap/Drawable from file path

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-01-15
                • 1970-01-01
                • 1970-01-01
                • 2018-08-27
                • 2013-05-08
                • 2020-12-06
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多