una studio silueta recortar power imagen google galeria fotos editar como arreglar android image crop

android - studio - editar fotos de mi galeria



Recortar una imagen pasando la ruta del archivo de imagen en Android (2)

He intentado el siguiente código. Sin embargo, siempre resulta en una imagen de 160 * 160 dimensiones.

try { //call the standard crop action intent (the user device may not support it) Intent cropIntent = new Intent("com.android.camera.action.CROP"); //indicate image type and Uri cropIntent.setDataAndType(Uri.fromFile(pictureFile), "image/*"); //set crop properties cropIntent.putExtra("crop", "true"); //indicate aspect of desired crop cropIntent.putExtra("aspectX", 100); cropIntent.putExtra("aspectY", 100); cropIntent.putExtra("scale", true); //indicate output X and Y cropIntent.putExtra("outputX", 500); cropIntent.putExtra("outputY", 500); //retrieve data on return cropIntent.putExtra("return-data", true); //start the activity - we handle returning in onActivityResult startActivityForResult(cropIntent, CROP_IMAGE); } catch(ActivityNotFoundException anfe) { //display an error message String errorMessage = "Whoops - your device doesn''t support the crop action!"; Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); toast.show(); }

Me gustaría recortar una imagen pasando su camino. No quiero capturar / elegir desde la aplicación de cámara predeterminada o la galería. Por favor ayúdame con esto.


De esta forma, puedes escalar la imagen:

Bitmap.createScaledBitmap(bitmap,50,50,true);


Lo he resuelto creando un nuevo archivo antes de llamar a Intent y pasando esta ruta de archivo para almacenar la imagen recortada a través del intento. Aquí está la solución para esto.

private Uri mCropImagedUri; private final int CROP_IMAGE = 100;//unique request code number. Which is used to identify the request result in onActivityResult() /**Crop the image * @return returns <tt>true</tt> if crop supports by the device,otherwise false*/ private boolean performCropImage(){ try { if(mFinalImageUri!=null){ //call the standard crop action intent (the user device may not support it) Intent cropIntent = new Intent("com.android.camera.action.CROP"); //indicate image type and Uri cropIntent.setDataAndType(mFinalImageUri, "image/*"); //set crop properties cropIntent.putExtra("crop", "true"); //indicate aspect of desired crop cropIntent.putExtra("aspectX", 1); cropIntent.putExtra("aspectY", 1); cropIntent.putExtra("scale", true); //indicate output X and Y cropIntent.putExtra("outputX", 500); cropIntent.putExtra("outputY", 500); //retrieve data on return cropIntent.putExtra("return-data", false); File f = createNewFile("CROP_"); try { f.createNewFile(); } catch (IOException ex) { VLLog.e("io", ex.getMessage()); } mCropImagedUri = Uri.fromFile(f); cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCropImagedUri); //start the activity - we handle returning in onActivityResult startActivityForResult(cropIntent, CROP_IMAGE); return true; } } catch(ActivityNotFoundException anfe){ //display an error message String errorMessage = "Whoops - your device doesn''t support the crop action!"; Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); toast.show(); return false; } return false; } private File createNewFile(String prefix){ if(prefix==null || "".equalsIgnoreCase(prefix)){ prefix="IMG_"; } File newDirectory = new File(Environment.getExternalStorageDirectory()+"/mypics/"); if(!newDirectory.exists()){ if(newDirectory.mkdir()){ VLLog.d(mContext.getClass().getName(), newDirectory.getAbsolutePath()+" directory created"); } } File file = new File(newDirectory,(prefix+System.currentTimeMillis()+".jpg")); if(file.exists()){ //this wont be executed file.delete(); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return file; }

Así que aquí no deberíamos preocuparnos por los datos que entran en el método onActivityResult() .

Aquí está la información completa sobre la imagen de recorte. Lo he usado para resolver. http://www.androidworks.com/crop_large_photos_with_android