Обрезать определенную часть изображения в android

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

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

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

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

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

4 ответа

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

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

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

Подробнее см. этот блог


Обратитесь к этой ссылке http://www.londatiga.net/featured-articles/how-to-select-and-crop-image-on-android/ и исходный код находится в этой ссылке https://github.com/lorensiuswlt/AndroidImageCrop


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


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

licensed under cc by-sa 3.0 with attribution.