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.
- Imagen sin recortar
- Recortar imagen cuadrada en círculo - Programáticamente
- Recortar parte particular de la imagen en android
- Cómo agregar la característica de recorte a la Intención de la cámara o la intención de la galería y en la vista Web o en JavaScript
- Permitir que el usuario recorte la imagen
¡Gracias por tu ayuda!
- Freehand Image Crop dibujar dentro de la región de mapa de bits
- Android crop ImageView dentro del padre RelativeLayout
- ¿Cómo realizar el recorte automático para el documento Reconocer la imagen con la cámara?
- Siempre Nulo devuelto después de recortar una foto de un Uri en Android Lollipop?
- Cómo recortar imágenes de la cámara
- Recortar la imagen directamente desde la matriz de bytes
- Cambiar el ancho y la altura de la vista personalizada en Android
- Recortar y agrandar imagen sin mover la superposición Ver en cambio mover la imagen en ImageView
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.
- Android Espresso: ¿Cómo afirmo que no debería mostrarse una vista?
- ¿Dónde Android almacena la configuración del sistema, como redes WiFi?