Cómo recortar una imagen en Android?

Posible duplicado:
Cómo recortar la imagen analizada en Android?

Tengo una imagen en mi carpeta res / drawable y me gustaría recortar (es decir, cortar una parte de la imagen) la imagen cuando la cargue en un ImageView. Sin embargo, no estoy seguro de cómo hacer esto, ¿alguna sugerencia?

Desde Bitmap.createBitmap : “Devuelve un bitmap inmutables del subconjunto especificado del bitmap de origen. El nuevo bitmap puede ser el mismo objeto que el origen o se puede haber hecho una copia. Se inicializa con la misma densidad que el bitmap original. ”

Pase un bitmap y defina el rectángulo a partir del cual se creará el nuevo bitmap.

// Take 10 pixels off the bottom of a Bitmap Bitmap croppedBmp = Bitmap.createBitmap(originalBmp, 0, 0, originalBmp.getWidth(), originalBmp.getHeight()-10); 

El administrador de contactos de Android EditContactActivity usa Intent("com.android.camera.action.CROP")

Este es un código de muestra:

 Intent intent = new Intent("com.android.camera.action.CROP"); // this will open all images in the Galery intent.setDataAndType(photoUri, "image/*"); intent.putExtra("crop", "true"); // this defines the aspect ration intent.putExtra("aspectX", aspectY); intent.putExtra("aspectY", aspectX); // this defines the output bitmap size intent.putExtra("outputX", sizeX); intent.putExtra("outputY", xizeY); // true to return a Bitmap, false to directly save the cropped iamge intent.putExtra("return-data", false); //save output image in uri intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 

Prueba esto:

 ImageView ivPeakOver=(ImageView) findViewById(R.id.yourImageViewID); Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.yourImageID); int width=(int)(bmp.getWidth()*peakPercent/100); int height=bmp.getHeight(); Bitmap resizedbitmap=Bitmap.createBitmap(bmp,0,0, width, height); ivPeakOver.setImageBitmap(resizedbitmap); 

De los documentos:

 static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height) 

Devuelve un bitmap inmutables del subconjunto especificado del bitmap de origen.

Si desea recortar igualmente la parte exterior de la imagen, debe verificar el atributo ScaleType para un ImageView: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

En particular, le interesaría la opción “centerCrop”. Recorta parte de la imagen que es más grande que el tamaño definido.

Aquí hay un ejemplo de cómo hacer esto en el diseño XML:

  
  int targetWidth = 100; int targetHeight = 100; RectF rectf = new RectF(0, 0, 100, 100);//was missing before update Bitmap targetBitmap = Bitmap.createBitmap( targetWidth, targetHeight,Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(targetBitmap); Path path = new Path(); path.addRect(rectf, Path.Direction.CW); canvas.clipPath(path); canvas.drawBitmap( sourceBitmap, new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight()), new Rect(0, 0, targetWidth, targetHeight), null); ImageView imageView = (ImageView)findViewById(R.id.my_image_view); imageView.setImageBitmap(targetBitmap);