Получить растровое изображение с камеры android - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь открыть камеру из своего приложения и получить растровое изображение. Но это не работает. Я получил эту ошибку: E / BitmapFactory: невозможно декодировать поток: java .io.FileNotFoundException: содержимое: / media / external / images / media / 9969: открыть не удалось: ENOENT (нет такого файла или каталога)

Вот код:

 private void openCamera()
{
    ContentValues contentValues = new ContentValues();
    contentValues.put(MediaStore.Images.Media.TITLE, "New Picture");
    contentValues.put(MediaStore.Images.Media.DESCRIPTION, "From the camera");
    image_uri =     getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);


    //Camera intent

    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
    startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);




}

Когда я вызываю openCamera (), вот результат действия:

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    switch (resultCode)
            {
                case RESULT_OK :
                {

                    //imageView.setImageURI(image_uri); this works

                    Bitmap bitmap = null;
                    String photoPath = image_uri.toString();
                    bitmap = BitmapFactory.decodeFile(photoPath);

                    imageView.setImageBitmap(bitmap); //this doesnt work ! --> the bitmap is empty



                    }

                    //finish
                case RESULT_CANCELED :
                {
          //  finish();
        }
        default: {
            //finish();
        }
    }

Мне нужно растровое изображение, чтобы сохранить изображение после этого. Это довольно странно, потому что изображение хорошо сохраняется в галерее, но я не могу его получить ...

1 Ответ

0 голосов
/ 19 марта 2020

В идеале вы должны использовать Glide, Picasso или другую библиотеку для загрузки изображений и просто загрузить ее из Uri в ваш ImageView.

Если вы настаиваете на использовании вашего Подход basei c, несмотря на его низкую производительность, замените:

String photoPath = image_uri.toString();
bitmap = BitmapFactory.decodeFile(photoPath);

на:

bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(image_uri));

A Uri не является файлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...