2012-03-17 2 views
9

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

Sample Image that i want to crop

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

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

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

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

ответ

6

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

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

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

Для более подробной информации Вы можете обратиться this blog

+0

Что такое postScale? – Swapnil

2

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

+3

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

+1

см. Этот http://coderzheaven.com/2011/03/crop-an-image-in-android/ – Aerrow

1

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

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

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

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

3-Позаботьтесь х, у из верхней и левой

4-, чтобы просмотреть битовую карту снова в вашем ImageView

imageView.setImageBitmap(croppedBmp); 
0

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

Смежные вопросы