android: selecciona la imagen de la galería, luego recorta y muestra en una imagen

Realmente necesito este código y busqué 3 horas en internet pero no pude encontrar un código completo y simple y probé muchos códigos pero algunos no funcionaron y otros no fueron buenos, por favor ayúdenme con un completo y simple código, gracias editar: tengo este código para seleccionar la imagen, pero por favor dame un código completo para todas las cosas que dije en el título porque no puedo parecerse a los códigos.

btn_choose.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select Picture"),SELECT_PICTURE); alertDialog1.dismiss(); } }); protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); selectedImagePath1=selectedImagePath; System.out.println("Image Path : " + selectedImagePath); image_capture1.setImageURI(selectedImageUri); } 

Espero que este código te ayude …

Actividad para seleccionar la imagen de la galería.

 import java.io.File; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; public class GalleryUtil extends Activity{ private final static int RESULT_SELECT_IMAGE = 100; public static final int MEDIA_TYPE_IMAGE = 1; private static final String TAG = "GalleryUtil"; String mCurrentPhotoPath; File photoFile = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try{ //Pick Image From Gallery Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_SELECT_IMAGE); }catch(Exception e){ e.printStackTrace(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode){ case RESULT_SELECT_IMAGE: if (resultCode == Activity.RESULT_OK && data != null && data.getData() != null) { try{ Uri selectedImage = data.getData(); String[] filePathColumn = {MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close(); //return Image Path to the Main Activity Intent returnFromGalleryIntent = new Intent(); returnFromGalleryIntent.putExtra("picturePath",picturePath); setResult(RESULT_OK,returnFromGalleryIntent); finish(); }catch(Exception e){ e.printStackTrace(); Intent returnFromGalleryIntent = new Intent(); setResult(RESULT_CANCELED, returnFromGalleryIntent); finish(); } }else{ Log.i(TAG,"RESULT_CANCELED"); Intent returnFromGalleryIntent = new Intent(); setResult(RESULT_CANCELED, returnFromGalleryIntent); finish(); } break; } } } 

Actividad para recortar la imagen seleccionada:

 public class ImageSelecter extends Activity{ private final int GALLERY_ACTIVITY_CODE=200; private final int RESULT_CROP = 400; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); btn_choose.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //Start Activity To Select Image From Gallery Intent gallery_Intent = new Intent(getApplicationContext(), GalleryUtil.class); startActivityForResult(gallery_Intent, GALLERY_ACTIVITY_CODE); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == GALLERY_ACTIVITY_CODE) { if(resultCode == Activity.RESULT_OK){ picturePath = data.getStringExtra("picturePath"); //perform Crop on the Image Selected from Gallery performCrop(picturePath); } } if (requestCode == RESULT_CROP ) { if(resultCode == Activity.RESULT_OK){ Bundle extras = data.getExtras(); Bitmap selectedBitmap = extras.getParcelable("data"); // Set The Bitmap Data To ImageView image_capture1.setImageBitmap(selectedBitmap); image_capture1.setScaleType(ScaleType.FIT_XY); } } } private void performCrop(String picUri) { try { //Start Crop Activity Intent cropIntent = new Intent("com.android.camera.action.CROP"); // indicate image type and Uri File f = new File(picUri); Uri contentUri = Uri.fromFile(f); cropIntent.setDataAndType(contentUri, "image/*"); // set crop properties cropIntent.putExtra("crop", "true"); // indicate aspect of desired crop cropIntent.putExtra("aspectX", 1); cropIntent.putExtra("aspectY", 1); // indicate output X and Y cropIntent.putExtra("outputX", 280); cropIntent.putExtra("outputY", 280); // retrieve data on return cropIntent.putExtra("return-data", true); // start the activity - we handle returning in onActivityResult startActivityForResult(cropIntent, RESULT_CROP); } // respond to users whose devices do not support the crop action catch (ActivityNotFoundException anfe) { // display an error message String errorMessage = "your device doesn't support the crop action!"; Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); toast.show(); } } } 

Estoy publicando aquí código de trabajo:

 private static final int PICK_FROM_GALLERY = 2; buttonGallery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); //******call android default gallery intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); //******code for crop image intent.putExtra("crop", "true"); intent.putExtra("aspectX", 0); intent.putExtra("aspectY", 0); try { intent.putExtra("return-data", true); startActivityForResult( Intent.createChooser(intent,"Complete action using"), PICK_FROM_GALLERY); } catch (ActivityNotFoundException e) {} } }); } 

inside onActivityResult

 if (requestCode == PICK_FROM_GALLERY) { Bundle extras2 = data.getExtras(); if (extras2 != null) { Bitmap photo = extras2.getParcelable("data"); imgview.setImageBitmap(photo); } } 

Por favor prueba esto

tengo un enfoque un poco diferente

utilizo una biblioteca externa para gestionar mis descargas, la biblioteca lo cargará en segundo plano

esta configuración permite un buen rendimiento para la lista con muchos elementos y desplazamiento rápido 🙂

 DisplayImageOptions options=new DisplayImageOptions.Builder() .cacheOnDisk(true) .imageScaleType(ImageScaleType.EXACTLY) .considerExifParams(true) .bitmapConfig(Bitmap.Config.RGB_565) .imageScaleType(ImageScaleType.EXACTLY) .build(); ImageLoader.getInstance().displayImage(url, imageView, options);