如何在android版谷歌API的CameraSource中保存带有覆盖的图像



我在android中使用谷歌API进行人脸检测。当检测到人脸时,我正在画布上绘制图像。我正试图通过点击一个按钮来捕捉带有覆盖的图像。在方法中public void onPictureTaken(byte[] bytes),字节只包含没有覆盖的图像。有没有办法保存覆盖的图像?

您必须进行

  • 创建一个由新位图支持的新画布

    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

相关内容

  • 没有找到相关文章

最新更新