Обрезать определенную часть изображения в Android - PullRequest
9 голосов
/ 17 марта 2012

Я хочу обрезать красную часть из следующего изображения. Существует ли в Android простой метод, который может обрезать следующее изображение.

Sample Image that i want to crop

Я нашел много вопросов SO, но всепредлагаем использовать следующий код:

Bitmap croppedBitmap = Bitmap.createBitmap(bitmapOriginal, 100, 100,100, 100); 

Этот код хорошо работает, если ширина и высота составляют около 2-мегапиксельного разрешения, но если эта обрезанная часть имеет разрешение более 3 мегапикселей, чем произошел сбой приложения при ошибке OOM.

Есть ли способ обработки изображения более 3 Мп во время кадрирования?

Ответы [ 4 ]

6 голосов
/ 17 марта 2012

Вы можете использовать следующий код, который может решить вашу проблему.

Matrix matrix = new Matrix();
matrix.postScale(0.5f, 0.5f);
Bitmap croppedBitmap = Bitmap.createBitmap(bitmapOriginal, 100, 100,100, 100, matrix, true);

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

Более подробно вы можете сослаться на этот блог

2 голосов
/ 29 июля 2013

1 - Измените ваше изображение для растрового изображения

final Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img);

2 - используйте растровое изображение, чтобы обрезать то, что вы хотите

Bitmap croppedBmp = Bitmap.createBitmap(bitmap, x, y , width , height);

3-Берегите x, y сверху и слева

4 - для предварительного просмотра растрового изображения в вашем изображении

imageView.setImageBitmap(croppedBmp);
2 голосов
/ 17 марта 2012

См. Эту ссылку http://www.londatiga.net/featured-articles/how-to-select-and-crop-image-on-android/, а исходный код находится по этой ссылке https://github.com/lorensiuswlt/AndroidImageCrop

0 голосов
/ 29 августа 2013

Если вы хотите обрезать изображение любой формы ИЛИ только выбранную часть, то Вы можете использовать готовую библиотеку с открытым исходным кодом

...