gpt4 book ai didi

java - camera.setPreviewCallback 旋转图像

转载 作者:太空宇宙 更新时间:2023-11-04 13:11:55 24 4
gpt4 key购买 nike

我需要在方法camera.setPreviewCallback(new PreviewCallback(){Android 以横向模式保存图像,而我需要以纵向模式保存图像。有没有办法直接旋转byte[]数据?

最佳答案

您不需要旋转字节数据。您可以使用下面的代码简单地设置相机的旋转(假设变量 camera 是您的 Camera 实例:

Camera.Parameters params = camera.getParameters();
params.setRotation(90);

camera.setParameters(params);

并且可以通过调用camera.setDisplayOrientation(90);来专门设置预览旋转;

以下是自动检查手机方向并相应显示相机预览和保存的图像旋转的快速方法:

int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();

int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break;
case Surface.ROTATION_90: degrees = 90; break;
case Surface.ROTATION_180: degrees = 180; break;
case Surface.ROTATION_270: degrees = 270; break;
}

int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}

params.setRotation(result);
camera.setDisplayOrientation(result);

camera.setParameters(params);

请注意,所有这些都假设您仍在使用 Camera 类,该类在 API 21+ 中已弃用。但是,替换它的 Camera2 api 仅在 21+ 中可用。

关于java - camera.setPreviewCallback 旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874454/

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