У меня есть процедура, которая манипулирует растровым изображением для преобразования формы RGB в оттенки серого.
Обычно он работает нормально, но когда я пытаюсь использовать его на растровом изображении размером 1088 КБ, он дает мне эту ошибку:
java.lang.OutOfMemoryError
Я использую эмулятор. 1088кб не очень большая картинка, как она может исчерпать память?
Чтобы быть точным, приложение, которое вызывает проблемный код, включает в себя еще одно действие в заднем стеке, которое имеет ListView миниатюр изображений.
Это метод:
public Bitmap toGrayscale(Bitmap bmpOriginal)
{
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}