Получить изображение Uri + эскиз картинки, снятой камерой в Android - PullRequest
6 голосов
/ 31 августа 2011

Я хочу обновить ImageView с помощью изображения, которое я делаю с помощью встроенной камеры Android. Я использую следующий код:

void getPhoto() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, TAKE_PICTURE);
    }

После этого я получаю фото с:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == TAKE_PICTURE) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            ImageView photoView = (ImageView) findViewById(R.id.photoId);
            photoView.setImageBitmap(photo);
            }
        }

Но с этим кодом, независимо от того, что я делаю, я получаю только эскиз фотографии, которую я сделал - мой вопрос, как я могу получить Uri фотографии, только что сделанной, чтобы работать не с миниатюрой, а с исходным изображением

Ps. Мне на самом деле нужен эскиз фотографии, но мне нужен и Uri оригинальной фотографии.

1 Ответ

4 голосов
/ 23 сентября 2011

Я поставил свой собственный URI, чтобы сообщить, где сохранить, тогда вы знаете, где он находится, не уверенный, что есть какой-либо другой способ. Создайте несколько полей для вашего файла.

private String imagePath = "/sdcard/Camera/test.jpg";
private File originalFile;

Затем инициализируйте файл.

originalFile = new File(imagePath);

Теперь запустите приложение Camera с намерением, передав URI как дополнительный.

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri outputFileUri = Uri.fromFile(originalFile);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(intent, RESULT_CAPTURE_IMAGE); 

В onActivityResult () извлекаем URI

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == RESULT_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK) {
        mBitmap = BitmapFactory.decodeFile(originalImagePath, BitmapFactoryOptions);  //set whatever bitmap options you need.

Так что теперь вы можете создать растровое изображение, используя createBitmap или использовать путь к файлу для всего, что вам нужно

...