【问题标题】:ImageView is not showing captured Image using Camera in androidImageView 未显示在 android 中使用相机捕获的图像
【发布时间】:2019-07-09 04:23:24
【问题描述】:

我正在尝试选择要注册的图像。当点击ImageView 时,用户将可以选择是拍照还是从他/她的画廊中选择。当用户选择图库选项时,它将显示所选图像。当用户选择相机选项时,ImageView 不会显示图像。下面是我的OnActivityResult代码

protected void onActivityResult(int requestCode, int resultCode, Intent imgdata) {
        super.onActivityResult(requestCode, resultCode, imgdata);
        if (requestCode == SELECT_IMAGE && resultCode == RESULT_OK && imgdata != null) {
            selectedimage = imgdata.getData();
            try {
                InputStream inputStream = getContentResolver().openInputStream(selectedimage);
                Bitmap yourselectedimage = BitmapFactory.decodeStream(inputStream);
                imgchild.setImageBitmap(yourselectedimage);

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
            }
        }
        if (requestCode == CAPTURE_IMAGE && resultCode == RESULT_OK && imgdata != null) {
            camImg =(Bitmap) imgdata.getExtras().get("img");
            try {
                imgchild.setImageBitmap(camImg);

            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
            }
        }
    }

ImageView 应该显示从相机拍摄的照片。

【问题讨论】:

  • 您是否检查过camImg 是否为null
  • 深度阅读photobasics

标签: android android-camera android-imageview


【解决方案1】:

我觉得应该是这样的

    Bitmap imageBitmap = (Bitmap) extras.get("data");
    mImageView.setImageBitmap(imageBitmap);

【讨论】:

    【解决方案2】:

    通过阅读您的代码,我认为camImg 很可能为空,因为您从Intent 提取位图的方式不正确。

    Bitmap 实现了Parcelable,所以需要这样解压:

    camImg = (Bitmap) imgdata.getParcelableExtra("img");
    

    【讨论】:

      【解决方案3】:

      我希望这对你有用。

      这样设置图片

          Bitmap photo = (Bitmap) data.getExtras().get("data");
          imageView.setImageBitmap(photo);
      
      
         // CALL THIS METHOD TO GET THE ACTUAL PATH
         Uri tempUri = getImageUri(getApplicationContext(), photo);
         File finalFile = new File(getRealPathFromURI(tempUri));
         Log.e("path", finalFile.getAbsolutePath());
      

      获取图片存储路径

       public String getRealPathFromURI(Uri uri) {
                  Cursor cursor = getContentResolver().query(uri, null, null, null, null);
                  cursor.moveToFirst();
                  int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                  return cursor.getString(idx);
              }
      

      【讨论】:

        【解决方案4】:

        我在使用 Android Marshmallow 时遇到了同样的问题,在我的情况下,它是由于位图大而发生的,所以我通过调整位图大小来使用以下代码

            final int maxSize = 960;
            int outWidth;
            int outHeight;
            int inWidth = CameraActivity.bitmap.getWidth();
            int inHeight = CameraActivity.bitmap.getHeight();
            if(inWidth > inHeight){
                outWidth = maxSize;
                outHeight = (inHeight * maxSize) / inWidth;
            } else {
                outHeight = maxSize;
                outWidth = (inWidth * maxSize) / inHeight;
            }
                iv_captured_image.setImageBitmap(Bitmap.createScaledBitmap(CameraActivity.bitmap, outWidth, outHeight, false));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-03
          • 1970-01-01
          • 2020-11-08
          • 1970-01-01
          相关资源
          最近更新 更多