Saltar al contenido

Obtener la ruta de la imagen capturada en Android usando la intención de la cámara

Bienvenido a nuestro espacio, en este lugar encontrarás la solucíon a lo que buscas.

Solución:

Prueba así

Pase la intención de la cámara como a continuación

Intent intent = new Intent(this);
startActivityForResult(intent, REQ_CAMERA_IMAGE);

Y después de capturar la imagen Escriba un OnActivityResult como a continuación

protected void onActivityResult(int requestCode, int resultCode, Intent data)   
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) 
        Bitmap photo = (Bitmap) data.getExtras().get("data"); 
        imageView.setImageBitmap(photo);
        knop.setVisibility(Button.VISIBLE);


        // CALL THIS METHOD TO GET THE URI FROM THE BITMAP
        Uri tempUri = getImageUri(getApplicationContext(), photo);

        // CALL THIS METHOD TO GET THE ACTUAL PATH
        File finalFile = new File(getRealPathFromURI(tempUri));

        System.out.println(mImageCaptureUri);
      


public Uri getImageUri(Context inContext, Bitmap inImage) 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
    return Uri.parse(path);


public String getRealPathFromURI(Uri uri) 
    String path = "";
    if (getContentResolver() != null) 
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        if (cursor != null) 
            cursor.moveToFirst();
            int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
            path = cursor.getString(idx);
            cursor.close();
        
    
    return path;

Y comprobar el registro

Editar:

Mucha gente pregunta cómo no obtener una miniatura. Debe agregar este código en su lugar para el getImageUri método:

public Uri getImageUri(Context inContext, Bitmap inImage) 
    Bitmap OutImage = Bitmap.createScaledBitmap(inImage, 1000, 1000,true);
    String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), OutImage, "Title", null);
    return Uri.parse(path);

El otro método Comprime el archivo. Puede ajustar el tamaño cambiando el número 1000,1000

Hay una solución para crear un archivo (en el directorio de caché externo o en cualquier otro lugar) y poner el uri de este archivo como salida adicional para la intención de la cámara: esto definirá la ruta donde se almacenará la imagen tomada.

Aquí hay un ejemplo:

File file;
Uri fileUri;
final int RC_TAKE_PHOTO = 1;

    private void takePhoto() 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        file = new File(getActivity().getExternalCacheDir(), 
                String.valueOf(System.currentTimeMillis()) + ".jpg");
        fileUri = Uri.fromFile(file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
        getActivity().startActivityForResult(intent, RC_TAKE_PHOTO);

    


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

        if (requestCode == RC_TAKE_PHOTO && resultCode == RESULT_OK) 

                //do whatever you need with taken photo using file or fileUri

            
        
    }

Luego, si ya no necesita el archivo, puede eliminarlo usando file.delete();

Por cierto, los archivos del directorio de caché se eliminarán cuando el usuario borre el caché de la aplicación de la configuración de la aplicación.

Pruebe este método para obtener la ruta de original imagen capturada por la cámara.

public String getOriginalImagePath() 
        String[] projection =  MediaStore.Images.Media.DATA ;
        Cursor cursor = getActivity().managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                projection, null, null, null);
        int column_index_data = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToLast();

        return cursor.getString(column_index_data);
    

Este método devolverá la ruta de la última imagen capturada por la cámara. Así que este camino sería de original imagen no de miniatura mapa de bits

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *