[英]Capture bitmap of ARCore ArSceneView
我正在尝试添加一个屏幕快照按钮,以捕获ARCore相机视图(包括附加节点)的屏幕快照。
我尝试了几种不同的方法,所有方法都可以捕获屏幕上的其他内容,但是ARSceneView始终是透明的。
我尝试过的事情:
ArFragment arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment);
View view = arFragment.getARSceneView(); //Also tried arFragment.getView();
(1)
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
(2)
Bitmap bitmap = getBitmapFromView(view);
public Bitmap getBitmapFromView(View view) {
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap returnedBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable drawable = view.getBackground();
if (drawable != null)
drawable.draw(canvas);
view.draw(canvas);
return returnedBitmap;
}
我也知道您可以从ARFragment获取图像,但是它将返回一个空白的透明图像
Image image = arFragment.getArSceneView().getArFrame().acquireCameraImage();
//image is completely transparent and wrong size
您可以使用PixelCopy.request()
ArSceneView view = fragment.getArSceneView();
final Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
PixelCopy.request(view, bitmap, (copyResult) -> {
if (copyResult == PixelCopy.SUCCESS) {
// Save bitmap
} else {
// Error
}
}, handler);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.