Intención de la cámara con Android con recorte

He estado tratando de recortar y cambiar el tamaño de una imagen mientras toma una foto a través de la intención de la cámara, pero no entiendo lo que estoy haciendo mal aquí – no puede obtener los datos de imagen recortada, incluso si el archivo se guarda correctamente en el teléfono.

... public class Add extends Activity { private String imageFilePath; ... protected void onCreate(Bundle savedInstanceState) { ... imageFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/tmp/" + String.valueOf(System.currentTimeMillis()) + ".jpg"; imageFile = new File(imageFilePath); imageFileUri = Uri.fromFile(imageFile); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri); intent.putExtra("crop", "true"); intent.putExtra("outputX", 600); intent.putExtra("outputY", 600); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); startActivityForResult(intent, 0); ... } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode) { case 0 : { Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath); } } } 

Si uso intent.putExtra("crop", "true"); , imageFilePath devuelve null, si no devuelve el archivo correcto.

¡Gracias por tu ayuda!

Prueba esto ::

 private void doCrop() { final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>(); Intent intent = new Intent("com.android.camera.action.CROP"); intent.setType("image/*"); List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0); int size = list.size(); if (size == 0) { Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show(); return; } else { intent.setData(mImageCaptureUri); /* * intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); */ intent.putExtra("outputX", int_Height_crop); intent.putExtra("outputY", int_Width_crop); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); if (size == 1) { Intent i = new Intent(intent); ResolveInfo res = list.get(0); i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); startActivityForResult(i, CROP_FROM_CAMERA); } else { for (ResolveInfo res : list) { final CropOption co = new CropOption(); co.title = getPackageManager().getApplicationLabel( res.activityInfo.applicationInfo); co.icon = getPackageManager().getApplicationIcon( res.activityInfo.applicationInfo); co.appIntent = new Intent(intent); co.appIntent .setComponent(new ComponentName( res.activityInfo.packageName, res.activityInfo.name)); cropOptions.add(co); } CropOptionAdapter adapter = new CropOptionAdapter( getApplicationContext(), cropOptions); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Choose Crop App"); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { startActivityForResult( cropOptions.get(item).appIntent, CROP_FROM_CAMERA); } }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { if (mImageCaptureUri != null) { getContentResolver().delete(mImageCaptureUri, null, null); mImageCaptureUri = null; } } }); AlertDialog alert = builder.create(); alert.show(); } } } 

Cropoption ::

 package com.any; import android.content.Intent; import android.graphics.drawable.Drawable; public class CropOption { public CharSequence title; public Drawable icon; public Intent appIntent; } 

Intente eliminar esta línea: intent.putExtra ("return-data", true);

No necesita pasar esto. Esta línea de código le permitirá recuperar su mapa de bits según la intención de los datos. En este caso, su obtener su mapa de bits de un URI.

  • Coordenadas de recorte de Android
  • Android: Crash after Image Crop cuando se actualiza la versión del sistema operativo a 5.1.1
  • Capturar vídeo con proporción de aspecto 1: 1 en Android
  • Eliminar redimensionamiento automático de ImageView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.