gpt4 book ai didi

android - 当 Activity 固定为纵向时旋转生成的相机图像

转载 作者:行者123 更新时间:2023-11-29 18:03:23 25 4
gpt4 key购买 nike

我正在制作一个带有内置相机的应用程序。 Activity 固定为纵向,但我希望将图像正确地正面朝上保存,如下所示:

Camera camera = getCameraInstance(); //method found on http://developer.android.com/guide/topics/media/camera.html
Camera.Parameters params = camera.getParameters();
params.setRotation(someInteger); //I want to get the proper value for this method
camera.setParameters(params);

有没有人能做到这一点?

最佳答案

如果您只是想旋转通过调用 takePicture 收到的 JPEG 图像,那么 setRotation 是正确的方法。

问题是传递给 setRotation 的值是多少?假设您希望真实世界在保存的 JPEG 图像中“向上”,则需要根据相机传感器相对于世界的当前方向设置 setRotate。

你可以找出整个设备相对于世界的方向,你可以找出相机传感器的方向相对于设备的“自然”方向,并将这两个旋转组合成最终的回答。数学很容易出错,这就是我们在 setRotation 的 API 文档中明确说明的原因。 ,转载于此:

public void onOrientationChanged(int orientation) {
if (orientation == ORIENTATION_UNKNOWNsetRotation) return;
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
orientation = (orientation + 45) / 90 * 90;
int rotation = 0;
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
rotation = (info.orientation - orientation + 360) % 360;
} else { // back-facing camera
rotation = (info.orientation + orientation) % 360;
}
mParameters.setRotation(rotation);
}

您需要继承 OrientationEventListener并为回调方法实现上述内容。当然,在更新参数之前,你应该检查你的相机是否打开,mParameters等是否有效。

请注意,这只会旋转相机发出的 JPEG。如果您发现您的预览在 UI 中的方向不正确,您需要调用 setDisplayOrientation为了那个原因。摄像头传感器通常与设备的横向对齐,因此横向摄像头应用通常可以在不调用此函数的情况下逃脱,即使它们应该以防万一它们在不寻常的 Android 设备上。但是,如果您正在编写纵向应用程序,则可能必须调整显示方向以与您的 UI 对齐。与 setRotation 一样,您需要考虑一些因素,文档中包含用于正确计算的示例代码。

关于android - 当 Activity 固定为纵向时旋转生成的相机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612380/

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