Как получить растровое изображение фотографии, сделанной с помощью вызова Intent (MediaStore.ACTION_IMAGE_CAPTURE)?

сначала я создал уникальный путь к файлу для хранения фотографии с использованием даты:

File file = new File(Environment.getExternalStoragePublicDirectory( 
  Environment.DIRECTORY_DCIM),"raspberry");
String dateString = new SimpleDateFormat("MM/dd/yyyy_HH:mm:ss").format(new Date());
filePath=new File(file,"SideBySide4_"+dateString+".jpg");

Я создал uri из filePath с помощью FileProvider, который я определил в манифесте и xml:

mUri = FileProvider.getUriForFile(this,
            BuildConfig.APPLICATION_ID + ".provider",
            filePath);
mCurrentPhotoPath = "file:" + filePath.getAbsolutePath();//for getting Bitmap in onActivityResult()

Затем я запустил камеру Intent и дал ей Uri для хранения сделанной фотографии:

Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mUri);
startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);

Затем в onActivityResult() я пытаюсь получить Bitmap:

Uri imageUri=Uri.parse(mCurrentPhotoPath);
            File file=new File(imageUri.getPath());
            try{
                InputStream ims=new FileInputStream(file);
                photoBitmap=BitmapFactory.decodeStream(ims);
            }catch(FileNotFoundException e){
                return;
            }

Но photoBitmap имеет значение null

0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение:

Вы можете сделать что-то вроде этого:

В вашем onActivityResult () после щелчка по картинке вы получаете данные в data Итак:

Bitmap picture = (Bitmap) data.getExtras().get("data");

Может быть использован.

Надеюсь, это будет полезно.

Другие вопросы по теме