我有一个操作位图以将 RGB 格式转换为灰度的例程。
它通常工作正常,但是当我尝试在大小为 1088kb 的位图上使用它时,它给了我这个错误:
java.lang.OutOfMemoryError
我正在使用模拟器。1088kb不是很大的图,怎么会耗尽内存呢?
确切地说,调用有问题的代码的应用程序在后台堆栈上包含另一个 Activity,该 Activity 具有图片缩略图的 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;
}