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