gpt4 book ai didi

java - 如何将前置摄像头预览方向与设备方向同步?

转载 作者:行者123 更新时间:2023-12-01 14:10:04 25 4
gpt4 key购买 nike

我使用 SurfaceView 在我的应用程序中预览前置摄像头 View ,以便用户拍摄他/她的脸部照片。我希望预览的方向与设备方向同步,因此当用户旋转设备时,相机预览也会旋转。以下是我创建的表面:

@Override
public void surfaceCreated(SurfaceHolder holder) {
camera = openFrontFacingCamera();
if (camera != null) {
try {
camera.setDisplayOrientation(90);
camera.setPreviewDisplay(cameraPreview.getHolder());
camera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
} else {
myActivity.finish();
}
}

这会在设备旋转时旋转预览,但方式不正确。如果我以纵向模式握住手机,则此代码没问题。但在两种横向模式下,预览都会偏离 90 度。我怎样才能使预览始终保持直线? (除了反向肖像,我不认为手机会旋转到那个)。我不在乎图像是否镜像,很多人似乎对此有问题,但这与我的应用程序无关。我只是希望它始终位于顶部,你知道......在顶部:D。

最佳答案

不要使用这条线:- 相机.setDisplayOrientation(90);

然后使用 Matrix 类进行旋转或正确的方向。

Matrix matrix = new Matrix();
if (cameraPlugin.getCurrentCamId() == MyCameraInfo.CAMERA_FACING_FRONT)
matrix.preScale(-1.0f, 1.0f);
matrix.postRotate(90);

之后,在将其设置在 SurfaceView 或 Canvas 上之前,将此矩阵对象与位图一起使用,如下所示:-

mBitmap = Bitmap.createBitmap(mBitmap , 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), 矩阵, true);

关于java - 如何将前置摄像头预览方向与设备方向同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18589233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com