Как обрезать изображение в Android?

Возможный дубликат:
Как обрезать проанализированное изображение в android?

У меня есть изображение в папке res / drawable, и я хотел бы обрезать (например, отрезать часть изображения) изображение при загрузке в ImageView. Однако я не уверен, как это сделать, любые предложения?

Solutions Collecting From Web of "Как обрезать изображение в Android?"

Из Bitmap.createBitmap : «Возвращает неизменяемое растровое изображение из указанного подмножества исходного растрового изображения. Новый растровый рисунок может быть тем же самым объектом, что и источник, или может быть сделана копия. Он инициализируется с той же плотностью, что и исходное растровое изображение. "

Передайте ему растровое изображение и определите прямоугольник, из которого будет создано новое растровое изображение.

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

Менеджер контактов Android EditContactActivity использует Intent("com.android.camera.action.CROP")

Это пример кода:

 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); 

Попробуй это:

 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); 

Из Документов:

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

Возвращает неизменяемое растровое изображение из указанного подмножества исходного растрового изображения.

Если вы хотите одинаково обрезать внешнюю часть изображения, вы должны проверить атрибут ScaleType для ImageView: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

В частности, вас будет интересовать опция «centerCrop». Он выделяет часть изображения, размер которого больше заданного.

Вот пример этого в XML-макете:

 <ImageView android:id="@+id/title_logo" android:src="@drawable/logo" android:scaleType="centerCrop" android:padding="4dip"/> 
  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);