我正在将从相机检索到的每个帧转换为位图并将其显示在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();
}
答案 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);