You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用react-native-vision-camera拍摄广角照片的问题

解决react-native-vision-camera无法拍摄广角照片的问题

你的问题核心在于:useCameraDevice('back')默认返回的是设备的后置主摄,而非广角物理镜头。调整zoom参数只是在单个镜头的焦距范围内缩放,无法切换到广角镜头实现更宽的取景范围,这就是为什么和iPhone原生相机的广角效果有差距。

解决方案:明确选择广角镜头设备

通过useCameraDevices获取所有后置相机设备,筛选出广角类型的设备来使用:

import { Camera, useCameraDevices } from 'react-native-vision-camera';

// 获取所有相机设备
const devices = useCameraDevices();
// 筛选后置广角镜头
const wideAngleDevice = devices.back?.find(d => d.type === 'wide-angle-camera');
// 兜底:如果没有广角镜头, fallback 到主摄
const cameraDevice = wideAngleDevice ?? devices.back?.[0];

<Camera
  ref={cameraRef}
  style={styles.cameraContainer}
  device={cameraDevice}
  autoFocus={'off'}
  autoFocusPointOfInterest={{ x: 0.5, y: 0.5 }}
  isActive={true}
  enableZoomGesture={true}
  zoom={0}
/>

补充说明

  • 不同设备的镜头类型标识可能略有差异,wide-angle-camera是iOS设备广角镜头的标准类型值,安卓设备可根据实际情况调整筛选条件(比如查看device.name或device.position)。
  • 如果需要实现类似原生相机的「主摄/广角切换」功能,可以维护一个状态变量,在不同镜头设备之间切换渲染Camera组件。

内容的提问来源于stack exchange,提问作者user567

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:43:09