我正在使用ARCore创建一个应用程序以在空白表面上显示一些图像。我想捕获显示对象的那个表面的图像。我在AR相机屏幕上放置了一个捕获按钮。
是否可以使用ARCore相机中的对象捕获该视图?
答案 0 :(得分:2)
您可以使用以下public method捕获当前的ARFrame:
public Image acquireCameraImage()
此方法允许您从照相机获取与当前帧相对应的图像,并返回包含照相机图像数据的Android image object
。返回的图像对象格式为 AIMAGE_FORMAT_YUV_420_888 。
对于包含Sceneform的3D对象的视图,请使用getScreenShot()
方法:
public static Bitmap getScreenShot(View view) {
View screenView = view.getRootView();
screenView.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());
screenView.setDrawingCacheEnabled(false);
return bitmap;
}
...或使用其中一个:
fun onCameraClick(buffer: ByteBuffer, width : Int, height: Int): Bitmap {
buffer.rewind()
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
bitmap.copyPixelsFromBuffer(buffer)
return bitmap
}
答案 1 :(得分:1)
如果您只需要ARCore视图的屏幕截图,则可以尝试在ARCore片段的视图上使用一些Android功能,例如PixelCopy.request(view, bitmap, (copyResult)->{})
。
来源:https://codelabs.developers.google.com/codelabs/sceneform-intro/index.html?index=..%2F..io2018#14