Problema de imagen de recorte cuando se toma de la cámara
A continuación se muestra mi code snippet
relacionado en el que se redirecciona a la cropping app
después de que la imagen se ha disparado desde la cámara. Usualmente seguí este ejemplo . Pero durante la fase / momento entre la imagen tomada de la cámara y haciendo que esté disponible en la aplicación de cultivo, se muestra la carga continua y hace que mi aplicación terriblemente indiferente. Si esto sucede al menos una vez, cada vez que abra la aplicación, sólo muestra la carga.
Este problema no se produce en one scenario
-> Cuando no muevo mi dispositivo (es decir, sólo cuando no ocurre ninguna orientación de pantalla). ¿Puede alguien sugerirme para evitar este problema?
- Abrir una imagen en la Galería incorporada de Android
- Cómo crear una carpeta de imágenes de aplicaciones para mostrarla en la galería de Android
- Guardar vista de mapa de bits con getDrawingCache da una imagen en negro
- Obtener el nombre de la imagen de la imagen seleccionada de la galería en android
- Forma de recortar la imagen cuadrada de Android en la aplicación
public void shotFromCamera(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageCaptureUri); try { intent.putExtra("return-data", true); startActivityForResult(intent, PICK_FROM_CAMERA); } catch (ActivityNotFoundException e) { e.printStackTrace(); } } protected void onActivityResult(int requestCode, int resultCode,Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK && requestCode == PICK_FROM_CAMERA){ doCrop(); } else if(resultCode == RESULT_OK && requestCode == CROP_FROM_CAMERA) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photoBitmap = extras.getParcelable("data"); imageView.setImageBitmap(photoBitmap); if(mImageCaptureUri != null) { File f = new File(mImageCaptureUri.getPath()); if (f.exists()) f.delete(); } mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+ "/MyApp", "avatar" + String.valueOf(System.currentTimeMillis()) + ".jpg")); File file = new File(mImageCaptureUri.getPath()); selectedImagePath = mImageCaptureUri.getPath(); Log.d("pic1 ","pic to be created: "+selectedImagePath); OutputStream fOut = null; try { fOut = new FileOutputStream(file); photoBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); fOut.flush(); fOut.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } } } 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(imageCaptureUri); intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); 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); } }
Para aclarar mi problema, había ejecutado el código fuente en ese ejemplo, ya que es, el mismo problema sucede. Había corrido otro par de ejemplos que redirigir a la aplicación de recorte. El mismo problema ocurre mientras se cambia la orientación durante la fase explicada anteriormente.
PD : Si alguien tiene un ejemplo de trabajo que seguramente funciona incluso en cambios de orientación, estaría encantado de aceptarlo como una respuesta.
- Almacenamiento en caché de imágenes de Android
- Android ImageButton setImageResource de la variable
- Recortar imagen en android
- Cómo puedo mostrar imágenes de una carpeta específica en la galería de Android
- Google Android recarga imágenes incorrectas
- Android: ¿Cómo recibir un html completo, con imágenes y archivos css como cadena?
- Envío de flujo de imágenes por problema de socket: Android
- Android: Almacenamiento de imágenes en el directorio del proyecto (archivos)?
Usted puede ir con esto-
-
Obtener el mapa de bits de URI especificado, es decir, una imagen de tamaño completo utilizando
photo = android.provider.MediaStore.Images.Media.getBitmap(cr, Uri.fromFile(imageCaptureUri));
-
Utilice
Bitmap.CompressFormat.PNG
mientras comprime la imagen -
Crear un mapa de bits a escala utilizando
photo= Bitmap.createScaledBitmap(background, YourWidth, YourHeight, true);
-
Esta es su imagen escalada (recortada).
Compruebe el valor de imageCaptureUri! = intent.setData(imageCaptureUri);
antes de la línea intent.setData(imageCaptureUri);
En doCrop()
Editar
Primero guarde el resultado de la cámara en el archivo y pase el archivo para recortar la aplicación
intent.setData(Uri.fromFile(new File(path)));
- Cómo cambiar el color del hilandero, el texto y el botón del material AlertDialog y ProgressDialog
- Contador de obturador de cámara Android