camera

基础库 1.6.0 开始支持,低版本需做兼容处理

系统相机。扫码二维码功能,需升级微信客户端至6.7.3。需要用户授权 scope.camera2.10.0起 initdone 事件返回 maxZoom,最大变焦范围,相关接口 CameraContext.setZoom

相关api:wx.createCameraContext

属性类型默认值必填说明最低版本
modestringnormal应用模式,只在初始化时有效,不能动态变更2.1.0
resolutionstringmedium分辨率,不支持动态修改2.10.0
device-positionstringback摄像头朝向1.0.0
flashstringauto闪光灯,值为auto, on, off1.0.0
frame-sizestringmedium指定期望的相机帧数据尺寸2.7.0
bindstopeventhandle摄像头在非正常终止时触发,如退出后台等情况1.0.0
binderroreventhandle用户不允许使用摄像头时触发1.0.0
bindinitdoneeventhandle相机初始化完成时触发,e.detail = {maxZoom}2.7.0
bindscancodeeventhandle在扫码识别成功时触发,仅在 mode=”scanCode” 时生效2.1.0

mode 的合法值

说明最低版本
normal相机模式
scanCode扫码模式

resolution 的合法值

说明最低版本
low
medium
high

device-position 的合法值

说明最低版本
front前置
back后置

flash 的合法值

说明最低版本
auto自动
on打开
off关闭
torch常亮2.8.0

frame-size 的合法值

说明最低版本
small小尺寸帧数据
medium中尺寸帧数据
large大尺寸帧数据

Bug & Tip

  1. tip: 同一页面只能插入一个 camera 组件
  2. tip:请注意原生组件使用限制
  3. tip:onCameraFrame 接口根据 frame-size 返回不同尺寸的原始帧数据,与 Camera 组件展示的图像不同,其实际像素值由系统决定

示例代码

在开发者工具中预览效果

  1. <!-- camera.wxml -->
  2. <camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>
  3. <button type="primary" bindtap="takePhoto">拍照</button>
  4. <view>预览</view>
  5. <image mode="widthFix" src="{{src}}"></image>
  1. // camera.js
  2. Page({
  3. takePhoto() {
  4. const ctx = wx.createCameraContext()
  5. ctx.takePhoto({
  6. quality: 'high',
  7. success: (res) => {
  8. this.setData({
  9. src: res.tempImagePath
  10. })
  11. }
  12. })
  13. },
  14. error(e) {
  15. console.log(e.detail)
  16. }
  17. })