使用 CameraX 使用长焦镜头进行变焦

Posted

技术标签:

【中文标题】使用 CameraX 使用长焦镜头进行变焦【英文标题】:Zoom with the telephoto lens with CameraX 【发布时间】:2022-01-05 15:43:00 【问题描述】:

在我的应用中,变焦仅限于主镜头而不是设备的长焦镜头(如果有的话)。

长焦镜头可以由任何制造商提供;我不希望实现特定于制造商设备的 API 来访问长焦或广角镜头。

这会导致图片效果不佳,并且应用无法进一步缩放到主摄像头的缩放限制范围内。

如何使用长焦镜头(如果可能,也可以使用广角镜头)放大我的应用程序?

谢谢。

【问题讨论】:

【参考方案1】:

CameraX 根本无法为您提供您想要/需要的相机/镜头。您可以将缩放级别设置为最低可用,并希望获得最好的结果。您可以尝试 Camera2,但也不能保证。 理论上,如果您将缩放比例设置为低于 1.0f,这应该会使 cameraX 使用广角相机。实际上,除了 Pixel 6 之外,我从未见过任何设备支持此功能。甚至 Google Pixel 也无法实现必要的功能来支持带有 CameraX 的 3rd 方相机应用程序。如果您想检查,可以通过以下方式设置最小可用缩放:在大多数设备中,您会看到最小缩放为 1.0f,而在 Pixel 6 中为 ~0.7f。

val maxAvailableZoom = camera?.cameraInfo?.zoomState?.value?.maxZoomRatio
val minAvailableZoom = camera?.cameraInfo?.zoomState?.value?.minZoomRatio ?: 1f
camera?.cameraControl?.setZoomRatio(minAvailableZoom)

【讨论】:

以上是关于使用 CameraX 使用长焦镜头进行变焦的主要内容,如果未能解决你的问题,请参考以下文章

iPhone X 后置镜头的隐蔽发现

LG V40 ThinQ大量点!三主镜头与16倍变焦

如何使用 CameraX 拍摄多张图像?

进阶篇--相机镜头

小米10青春版

苹果7plus相机和美颜相机拍照正常,但微信拍照拍好后变成横的照片怎么回事?