位图旋转导致错误

时间:2016-11-14 10:27:26

标签: android bitmap opengl-es opengl-es-3.0

我正在将从相机检索到的每个帧转换为位图并将其显示在ImageView上,但我发现imageView包含一个旋转的位图,因此我想将位图旋转90度以将其设置为正确。为达到这个, 我编写了下面的代码来旋转位图90度,但在运行时我收到

bitmap size exceeds 32bits

我提到了一些帖子来解决这个问题,其中一个建议回收使用的每个位图,但它没有解决问题。 请告诉我为什么我会收到此错误以及如何解决?

@Override
protected void onProgressUpdate(Bitmap... values) {
        super.onProgressUpdate(values);

        Bitmap b = values[0];

        Matrix matrix = new Matrix();
        matrix.postScale(b.getWidth()-10, b.getHeight()-10);
        matrix.postRotate(90);

        Bitmap resizedBitmap = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), matrix, true);

        mIVEdges.setImageBitmap(resizedBitmap);

        b.recycle();
    }

1 个答案:

答案 0 :(得分:0)

如果你有100x100像素的位图,那么

matrix.postScale(b.getWidth()-10, b.getHeight()-10);

将导致新的位图缩放为90比例因子。

matrix.postScale(90, 90);

因此新Bitmap的输出为9000x9000像素。

如果要减小新位图的大小,则需要使用比例因子> 0.0和< 1.0

matrix.postScale(0.9f, 0.9f);