Android Camera图片未显示在ImageView中

时间:2018-11-09 15:19:33

标签: android firebase firebase-realtime-database android-camera-intent

在尝试将其上传到Firebase之前,我尝试使用“ Nexus 5X API 26”的相机拍摄图片并将其显示在ImageView字段中。

第一个问题是拍照后,它没有显示在imageView中。我正在执行以下操作:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, CAMERA_REQUEST_CODE);}

然后我试图以与从图库拍摄的照片相同的方式来显示照片:

filePath = data.getData();
   try {
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
      imageView.setImageBitmap(bitmap);
   } catch (IOException e) {
       e.printStackTrace();
   }

我不了解的部分是data.getData()在两种情况下(对于Gallery和Camera)如何工作?

我猜想uploadImage()方法对于图库和相机上传都应该是相同的(它已经适用于图库了……)。

所以我目前想念的是我没有得到filePath,我猜呢? 为了“ .getData(),是否需要“临时保存”相机的图片?还是没有任何“节省”就可以工作?

我只希望用户拍照,并且应该将其发送到Firebase。用户不必首先在imageView中看到它,只需获取uri(数据)即可上传。

view when i open the camera    view after taking a picture

1 个答案:

答案 0 :(得分:0)

这将为您提供帮助。

Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       startActivityForResult(intent,7);


     @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

            super.onActivityResult(requestCode, resultCode, data);


                    bitmap= (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream baos=new ByteArrayOutputStream();

            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] b = baos.toByteArray();
            imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);

            byte[] imageAsBytes = Base64.decode(imageEncoded.getBytes(), Base64.DEFAULT);
            InputStream is=new ByteArrayInputStream(imageAsBytes);
            bitmap1=BitmapFactory.decodeStream(is);
            img.setImageBitmap(bitmap1);


        }