我在 android 中使用谷歌 API 进行人脸检测。当检测到人脸时,我正在画布上绘制图像。我正在尝试通过单击按钮来捕获带有叠加层的图像。在方法
public void onPictureTaken(byte[] bytes)
中,字节只包含没有覆盖的图像。有没有办法保存带有叠加层的图像?
问问题
1248 次
1 回答
0
你必须
创建一个由新位图支持的新画布,
Bitmap picture = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); Bitmap resizedBitmap = Bitmap.createBitmap(mGraphicOverlay.getWidth(),mGraphicOverlay.getHeight(),picture.getConfig()); Canvas canvas = new Canvas(resizedBitmap);
在其上绘制捕获的位图
- 在其上绘制叠加层
- 保存新位图
此外,为了使叠加层与捕获的图片匹配,您需要镜像图片或叠加层
Matrix matrix = new Matrix();
matrix.setScale((float)resizedBitmap.getWidth()/(float)picture.getWidth(),(float)resizedBitmap.getHeight()/(float)picture.getHeight());
// mirror by inverting scale and translating
matrix.preScale(-1, 1);
matrix.postTranslate(canvas.getWidth(), 0);
Paint paint = new Paint();
canvas.drawBitmap(picture,matrix,paint);
tracker.getmEyesGraphic().draw(canvas); // make those accessible
于 2016-10-22T08:57:29.370 回答