android使用Matrix翻转位图导致OutOfMemoryError

时间:2011-09-25 03:42:35

标签: android matrix bitmap out-of-memory

我在模拟器和高分辨率屏幕的Android手机上都有这个问题:

09-24 21:59:01.772: ERROR/AndroidRuntime(341): FATAL EXCEPTION: Thread-8
09-24 21:59:01.772: ERROR/AndroidRuntime(341): java.lang.OutOfMemoryError: bitmap size exceeds VM budget

原因是因为我使用矩阵翻转位图(面向左,面向右) 我在启动时执行此操作并保存生成的Bitmap,因此我不会不必要地一遍又一遍地重新创建它。

但是在手机和模拟器AVD上显示的显示器比我的普通手机大,它会引发错误。

以下是方法:

private Bitmap Flip(Bitmap asset) {

    Matrix mat = new Matrix();
        mat.postScale(-1F, 1F); 
        int width = asset.getWidth();
        int height = asset.getHeight();

        return Bitmap.createBitmap(asset, 0, 0, width, height, mat, true);

}

这似乎是一个基本的转变,为什么它不能翻转位图? 它只有2kb。

有人可以建议另一种方法来获取位图的翻转版本吗?

0 个答案:

没有答案