锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Android 相机预览方向和拍照方向

时间:2023-09-23 23:07:02 6手动方向传感器多少

我们知道手机 Camera 图像数据来自摄像头硬件的图像传感器(Image Sensor),这个 Sensor 固定到手机后,有一个默认的取景方向,如下图所示,坐标原点位于手机横放时的左上角:

Camera 预览方向

因为手机屏幕可以 360 度旋转,为了保证用户无论如何旋转手机都能看到正确的预览画面。Android 根据当前手机屏幕的方向,系统底层对图像 Sensor 采集到的数据进行了旋转处理后才传输给显示系统。因此,你在打开 Camera 应用后,无论如何旋转手机,都能看到正确的画面。

这里的正确是指预览界面上显示的图片与你人眼看到的图片一致

Android 提供一个系统 API 来手动设置 Camera 预览方向,叫 setDisplayOrientation。在默认情况下,此值为0,与图像 Sensor 方向一致,不需要改变横屏应用。 Camera 预览方向。
但是,如果您的应用程序是垂直屏幕应用程序,则必须使用此应用程序 API 将 Camera 旋转预览方向 90 将摄像头的预览方向与手机屏幕的方向保持一致,从而获得正确的预览图片。

Camera 拍照方向

当你点击照片按钮时,图片的方向可能与图片中的预览方向不一致,因为照片是图像 Sensor 收集到的数据直接存储 SDCard上的,因此 Camera 的拍照方向与图像 Sensor 方向一致。

如果你用手机横向拍照,因为正好 Camera 拍照方向一致,所以得到的照片确;如果你用手机垂直拍照,图像 Sensor 上述角度仍然存储在图像采集后 SDCard 上面,所以得到的图片,因为垂直拿着手机和图像 Sensor 方向不同 90 度。因此,我们应该明白为什么我们用手机拍的照片经常需要旋转 90 你能看到正确的画面吗?

我认为上面的介绍应该已经澄清了这个问题。以下是如何在实际开发中使用设置 Camera 预览方向的 setDisplayOrientation 方法。

实际使用

根据以上分析,拍摄横屏应用时不需要额外设置这个方向,但需要调用竖屏应用 setDisplayOrientation(90) 来保证 Camera 预览方向和 Activity 如果方向一致,设置函数会影响吗? Camera 拍照的结果如何。

根据以上分析,理论上不应该影响,因为拍照得到的图片方向是图像 Sensor 方向一致。这个 API 修改的仅仅是 Camera 只是预览方向,不会影响 PreviewCallback 回调,生成 JPEG 图像和视频文件的方向,这些数据的方向仍然会跟随图像 Sensor 方向一致。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章