我一直在尝试使用Android上的Camera API使用相机捕获图像(不使用Camera2作为后端口)。由于Android上的大多数后置摄像头都以横向模式安装,因此需要旋转这些图像。在Bitmap.createBitmap(...)方法中使用Android中postRotate(int degree)
类的Matrix
方法,创建一个新的位图,占用更多的头部空间,如果没有分配,则会产生一个OOM异常。
由于我一直在开发的特定应用程序包括将覆盖文本放置在捕获的图像上,我不得不最终将位图绘制到画布上。因此,我决定将相同的位图绘制到画布而不是创建另一个。
以下是我在onDraw
方法中使用的代码:
Matrix mMatrix = new Matrix();
mMatrix.postRotate(90);
mMatrix.postTranslate(mBitmapFile.getHeight(),0);
canvas.drawBitmap(mBitmapFile,mMatrix,null);
这种方法是否可以推广以避免在一般用例中旋转位图和相应的OOM异常,或者它是否存在会增加更多复杂性的缺陷?