Вопрос по android – Android: не удалось получить оригинальную фотографию, снятую камерой (возможность читать только сжатые фотографии)

2

В моем приложении я делаю снимок на камеру Android, а затем хочу отправить его на сервер. Для этого я использую программирование Client Socket. Я преобразовываю захваченную фотографию в bytearray (byte []) и затем отправляю ее на сервер. Все работает идеально.

Проблема в том, что я не могу отправить оригинальное фото на сервер. Миниатюра фото отправляется на мобильный телефон Android. Но когда я снимаю фото на камеру, то в галерее есть оригинальное фото.

Как получить эту оригинальную фотографию для использования в моем приложении?

Мой код:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG);
        cameraIntent.putExtra("return-data", true);
    startActivityForResult(Intent.createChooser(cameraIntent, "Select Picture"),
                    CAMERA_REQUEST);

И в методе onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_REQUEST) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
//          byte[] a = (byte[]) data.getExtras().getByteArray("data"); // I also use this but not work


        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        photo.compress(CompressFormat.JPEG, 100, bos);
        byte[] bitmapdata = bos.toByteArray();


    }
}

вbitmapdata фото есть, но сжатое фото не оригинал. Некоторые люди говорят, что изменить поле качестваcompress(CompressFormat.JPEG, 100, bos); между 0 и 100, но ничего не произойдет.

-- >> есть ли другой способ получить оригинальное фото, снятое камерой?

-- >> Когда фотография находится в папке на моем компьютере, я читаю эту фотографию в файле, указывая путь. экс-File file = new File(c:\newphoto\image.jpg); , Могу ли я использовать этот код в Android для чтения оригинальной фотографии, потому что я знаю название и местоположение фотографии. Если да, то какой путь читать фото в галерее. Это работа, если я дам путь как:\DCIM\Camera\photoName.jpg.

-- >> Или некоторые изменения нужно в моем текущем коде, и он будет работать нормально?

Ваш Ответ

1   ответ
6

Вы используете Intent для захвата изображения, используяACTION_IMAGE_CAPTURE, Если вы обычно запускаете камеру с помощью Intent, она возвращает изображение в виде растрового изображения в onActivityResult (), но это будет сделано в целях миниатюр.

Если вы хотите получить изображение с полным разрешением с камеры, вам следует предоставить файл с намерением, которое вы запускаете, чтобы начать работу камеры.

Вы можете сделать как ниже

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File out = Environment.getExternalStorageDirectory();
out = new File(out, imagename);
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
startActivityForResult(i, CAMERA_RESULT);

Здесь естьMediaStore.EXTRA_OUTPUT параметр, который принимает Uri файла, в который вы хотите, чтобы ваша камера записывала изображения.

Для получения дополнительной информации вы можете обратиться ниже пример

Захват изображения с полного разрешения с камеры

Похожие вопросы