ビットマップを操作してフォームRGBをグレースケールに変換するルーチンがあります。
通常は正常に動作しますが、サイズが1088kbのビットマップで使用しようとすると、次のエラーが発生します。
java.lang.OutOfMemoryError
私はエミュレーターを使用しています。1088kbはそれほど大きな絵ではありませんが、どうすればメモリを使い果たしてしまうのでしょうか。
正確には、問題のあるコードを呼び出すアプリケーションには、写真のサムネイルの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;
}