我有一個例程,操縱一個位圖將表單RGB轉換爲灰度。Android模擬器:java.lang.OutOfMemoryError當操縱位圖
它工作正常,通常情況下,但是當我嘗試使用它在一個位圖是1088kb大小它給了我這個錯誤:
java.lang.OutOfMemoryError
我使用的模擬器。 1088kb不是一個很大的圖片,它怎麼會耗盡內存?
確切地說,確實調用有問題的代碼的應用程序包括具有圖片縮略圖ListView的後備棧上的另一個Activity。
這是方法:
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;
}
位圖大小是1088 kB或PNG文件? – Selvin 2013-02-14 15:07:16
你需要.recycle()位圖,當你沒有使用它,也許你可以回收「原件」,並保持灰度在內存 – PaNaVTEC 2013-02-14 15:13:41
@PaNaVTEC請問我該怎麼做?只需在位圖上調用recycle()即可?謝謝!!!! – 2013-02-14 15:22:02