ImageView未显示使用Android中的Camera捕获的图像

问题描述 投票:0回答:4

我正在尝试选择要注册的图像。单击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应显示从相机拍摄的图像。

android android-camera android-imageview
4个回答
0
投票

我认为应该是这样

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

0
投票

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

[Bitmap实现Parcelable,因此您需要像这样提取它:

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

0
投票

我希望这对您有用。

像这样设置图像

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

0
投票

我遇到了与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));
© www.soinside.com 2019 - 2024. All rights reserved.