更新记录

1.2.0(2026-07-19) 下载此版本

初次提交


平台兼容性

uni-app x(5.21)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 5.0 12 5.0.0 ×

其他

多语言 暗黑模式 宽屏模式
×

laoqianjunzi-camera

laoqianjunzi-camera 是一个面向 uni-app x / uni-app Vue3 项目的 UTS 相机插件,统一封装了 Android、iOS、Harmony、Web 四端的相机预览、拍照、录像、水印、绿幕和帧流能力。

本文档只描述当前插件已经提供的 API、组件和示例,不涉及旧插件、旧实现或兼容层。

功能概览

  • 相机预览:支持前后镜头切换、闪光灯、缩放、预览尺寸、渲染缩放比。
  • 拍照能力:支持高/中/低/原图质量、保存相册、前摄镜像、自定义文件名。
  • 录像能力:支持高/中/低质量、最大时长、音频开关、暂停与恢复。
  • 水印能力:支持标题、行文案、键值项面板、位置、字号、颜色、圆角、面板宽度。
  • 元信息能力:支持时间、地址、业务字段拼装,可与水印面板联动展示。
  • 绿幕能力:支持 HSV 范围、形态学开闭运算、腐蚀/膨胀、高斯模糊、透明预览。
  • 帧流能力:支持持续回调原始帧数据,用于视觉分析、检测或自定义处理链路。
  • 独立拍照页:提供 openWatermarkCapture,可直接打开插件内置的全屏水印拍照页。

适用平台

当前插件按 package.json 中的声明支持以下平台:

平台 支持情况
Android App 支持,最低 Android 5.0(API 21)
iOS App 支持,最低 iOS 12
Harmony App 支持,最低 HarmonyOS 5.0.0
Web 支持,需 HBuilderX 5.07+
小程序 不支持

权限说明

插件会用到如下权限:

  • Android:CAMERARECORD_AUDIO
  • iOS:CameraMicrophonePhoto LibraryPhoto Library Add
  • Harmony:CAMERAMICROPHONE

如果你的业务需要保存照片或视频到相册,还需要保证目标平台的相册写入权限链路已经打通。

安装后如何验证

安装插件后,可以直接打开插件内置示例页:

  • 示例页路径:uni_modules/laoqianjunzi-camera/pages/index
  • 全屏水印拍照内部页:uni_modules/laoqianjunzi-camera/pages/watermark-capture/index

示例页已经覆盖以下现有能力:

  • 预览打开/关闭
  • 拍照与录像
  • 闪光灯与镜头切换
  • 缩放控制
  • 帧流回调
  • 全屏水印拍照

快速开始

1. 使用预览组件

插件提供了现成的 easycom 组件:<laoqianjunzi-camera />

<template>
    <laoqianjunzi-camera
        class="camera"
        :autoStart="false"
        :enableAudio="false"
        :position="'back'"
        :flashMode="'off'"
        :watermark="watermarkConfig"
        :meta="metaConfig"
        @ready="handleReady"
        @photo="handlePhoto"
        @error="handleError"
    />
</template>

页面需要滚动时,App 端请使用 scroll-view 包裹页面内容;uni-app x App 端页面默认不滚动。

2. 使用组件实例方法

组件内部已经封装了当前 API 的常用调用,适合业务页面直接通过 ref 操作:

<template>
    <laoqianjunzi-camera ref="cameraRef" class="camera" :autoStart="false" />
</template>

<script lang="uts">
export default {
    methods: {
        openPreview() {
            const camera = this.$refs.cameraRef
            camera.open()
        },
        takePhoto() {
            const camera = this.$refs.cameraRef
            camera.take({
                quality: 'high',
                saveToAlbum: false
            })
        }
    }
}
</script>

3. 直接调用顶层 API

如果你更希望通过统一上下文或顶层方法来调用,也可以直接从插件根入口导入:

import {
    openCameraPreview,
    closeCameraPreview,
    takeCameraPhoto,
    startCameraRecord,
    stopCameraRecord,
    switchCameraLens,
    setCameraFlashMode,
    setCameraZoom,
    updateCameraWatermark,
    updateCameraMeta,
    setCameraGreenScreen,
    setCameraPreviewSize,
    setCameraScalingRatio,
    startCameraFrameFeed,
    stopCameraFrameFeed,
    openWatermarkCapture,
    createLaoqianjunziCameraContext
} from '@/uni_modules/laoqianjunzi-camera'

对外能力说明

组件 Props

laoqianjunzi-camera 主要支持这些属性:

Prop 类型 说明
position 'back' \| 'front' 默认镜头
flashMode 'auto' \| 'off' \| 'on' \| 'torch' 闪光灯模式
resolution 'low' \| 'medium' \| 'high' 预览分辨率
frameSize 'small' \| 'medium' \| 'large' 帧流尺寸等级
hidden boolean 是否隐藏预览内容
minFps / maxFps number 预览帧率范围
enableAudio boolean 录像时是否采集音频
autoStart boolean 组件创建后是否自动打开预览
mirrorFrontCapture boolean 前摄拍照/录像是否镜像
previewWidth / previewHeight number 指定预览输出尺寸
scalingRatio number 预览缩放比
watermark LaoqianjunziCameraWatermarkConfig \| null 图片水印配置
meta LaoqianjunziCameraMetaConfig \| null 元信息配置
greenScreen LaoqianjunziCameraGreenScreenConfig \| null 绿幕配置
controls LaoqianjunziCameraControlsConfig \| null 内置控制层配置

组件事件

事件 回调参数 说明
ready LaoqianjunziCameraReadyResult 预览就绪,返回平台、缩放范围、闪光灯支持情况
error LaoqianjunziCameraFail 统一错误回调
stop 预览关闭完成
photo LaoqianjunziCameraPhotoResult 拍照成功
preview LaoqianjunziCameraPhotoResult 点击内置缩略图预览时触发
cancel 点击内置返回按钮
recordstart LaoqianjunziCameraRecordStartResult 开始录像
recordpause LaoqianjunziCameraRecordStartResult 暂停录像
recordresume LaoqianjunziCameraRecordStartResult 恢复录像
recordstop LaoqianjunziCameraRecordStopResult 停止录像
frame LaoqianjunziCameraFrameResult 帧流回调

组件实例方法

组件通过 defineExpose 暴露了以下方法,适合业务页通过 ref 直接调用:

方法 说明
open() / close() 打开或关闭预览
take(options) 执行拍照
startRecord(options) / stopRecord(options) 开始或停止录像
pauseRecord() / resumeRecord() 暂停或恢复录像
switchTo(position) / switchCamera() 切换镜头
updateFlash(mode) 设置闪光灯模式
updateZoom(zoom) 设置缩放值
updateWatermarkConfig(watermark) 动态更新水印配置
updateMetaConfig(meta) 动态更新元信息
updateGreenScreenConfig(greenScreen) 动态更新绿幕参数
setPreviewSize(width, height) 动态设置预览输出尺寸
setScalingRatio(ratio) 动态设置渲染缩放比
setHidden(hidden) 隐藏或显示预览
setFrameRateRange(minFps, maxFps) 调整帧率范围
startFrameStream() / stopFrameStream() 启停帧流
setStartColor() / setEndColor() 调整绿幕 HSV 和后处理参数

顶层 API 清单

插件根入口当前导出了这些方法:

API 说明
createLaoqianjunziCameraContext() 创建统一相机上下文实例
openCameraPreview(options) 打开预览
closeCameraPreview(options) 关闭预览
takeCameraPhoto(options) 拍照
startCameraRecord(options) 开始录像
pauseCameraRecord(options) 暂停录像
resumeCameraRecord(options) 恢复录像
stopCameraRecord(options) 停止录像
switchCameraLens(options) 切换镜头
setCameraFlashMode(options) 设置闪光灯
setCameraZoom(options) 设置缩放
updateCameraWatermark(options) 更新水印
updateCameraMeta(options) 更新元信息
setCameraGreenScreen(options) 设置绿幕参数
setCameraPreviewSize(options) 设置预览尺寸
setCameraScalingRatio(options) 设置渲染缩放
startCameraFrameFeed(options) 开始帧流
stopCameraFrameFeed(options) 停止帧流
openWatermarkCapture(options) 打开全屏水印拍照页

关键配置对象

水印配置 LaoqianjunziCameraWatermarkConfig

适用于拍照结果叠加信息面板,常用字段如下:

  • enabled:是否启用
  • anchortopLefttopRightbottomLeftbottomRight
  • title:水印标题
  • lines:多行说明文案
  • items:键值项面板列表
  • textColortitleColordetailColor:文字颜色
  • backgroundColor:背景色
  • paddinglineSpacing:内边距与行距
  • fontSizetitleFontSizedetailFontSize:字号
  • cornerRadius:圆角
  • panelWidth:面板宽度

元信息配置 LaoqianjunziCameraMetaConfig

用于时间、地址、业务字段聚合展示:

  • title
  • timeText
  • addressText
  • lines
  • items

组件内部会把 metawatermark 合并,用于预览和输出图像的同构展示。

绿幕配置 LaoqianjunziCameraGreenScreenConfig

如果你的场景涉及抠像或替换背景,可用这些字段:

  • enabled
  • startColor / endColor
  • morphOpen / morphClose
  • dilate / erode
  • gaussianBlur
  • scalingRatio
  • previewWidth / previewHeight
  • backgroundColor
  • transparentPreview

全屏水印拍照

openWatermarkCapture(options) 适合“一次打开、完成后立即返回结果”的拍照场景,例如打卡、巡检、取证。

openWatermarkCapture({
    cameraPosition: 'back',
    flashMode: 'off',
    title: '现场巡检',
    timeText: '2026-07-08 14:35:20',
    addressText: '浙江省杭州市滨江区',
    lines: ['施工点位 A-12', '责任人:张工'],
    items: [
        { label: '班组', value: '安装一组' },
        { label: '天气', value: '晴天 26°C' }
    ],
    saveToAlbum: false,
    closeAfterCapture: true,
    success: (result) => {
        console.log('拍照成功', result.tempFilePath)
    }
})

openWatermarkCapture 主要参数

字段 说明
cameraPosition 默认镜头
flashMode 默认闪光灯模式
mirrorFrontCapture 前摄镜像
previewWidth / previewHeight 预览输出尺寸
scalingRatio 预览缩放比
timeText / addressText 时间与地址文案
title / lines / items 水印面板内容
maxPhotoCount 单次页面最多拍照数量
closeAfterCapture 拍完是否立即关闭页面
saveToAlbum 是否保存相册
outputFileName 输出文件名
ui 内置按钮图标和显隐配置
success / preview / fail / cancel / complete 生命周期回调

返回结果

预览就绪 LaoqianjunziCameraReadyResult

字段 说明
errMsg 结果标识
platform 当前平台
maxZoom 最大缩放值
minZoom 最小缩放值
supportsFlash 是否支持闪光灯

拍照结果 LaoqianjunziCameraPhotoResult

字段 说明
tempFilePath 图片临时路径
tempImagePath 图片临时路径别名
savedUri 保存后的平台 URI
quality 输出质量
savedToAlbum 是否保存到相册
base64 图片 Base64
width / height 图片尺寸
devicePosition 拍摄镜头
photoIndex 当前拍照序号
watermarkApplied 是否成功叠加水印

录像结果 LaoqianjunziCameraRecordStopResult

字段 说明
tempVideoPath 视频临时路径
savedUri 保存后的平台 URI
quality 输出质量
savedToAlbum 是否保存到相册
duration 实际录像时长,单位秒
paused 停止时是否处于暂停态

错误码

插件当前定义了统一错误码:

错误码 含义
9012201 当前未找到可用的相机实例
9012202 相机预览尚未启动
9012203 相机权限未授予
9012204 录制任务正在执行中
9012205 当前没有正在进行的录制任务
9012206 当前设备不支持闪光灯控制
9012207 参数不合法
9012208 拍照失败
9012209 录像失败
9012210 切换摄像头失败
9012211 更新水印失败
9012212 启动帧流失败
9012213 录像暂停或恢复失败
9012214 更新相机元信息失败
9012215 更新绿幕参数失败
9012216 设置预览尺寸或渲染缩放失败
9012217 当前平台暂不支持该能力

开发注意事项

  • uni-app x App 端页面默认不可滚动,示例页这类长页面请使用 scroll-view 包裹。
  • 使用 display: flex 时,请显式声明 flex-direction,避免和 Web 默认值混淆。
  • uni-app x App 端样式以 class 选择器为主,不要依赖标签选择器、#id 选择器或复杂层级选择器。
  • 文本样式不会从父容器继承,请把字号、颜色、行高直接写在 <text> 上。
  • 帧流回调频率较高,业务层建议自行节流或只在需要时开启。
  • 录像开启音频时,要确保对应平台麦克风权限已经授权。
  • Web 端的录像容器和相机权限行为受浏览器实现限制,建议优先在 Chrome / Safari 最新版本验证。

示例页对应文件

  • 示例页:uni_modules/laoqianjunzi-camera/pages/index.uvue
  • 全屏水印拍照页:uni_modules/laoqianjunzi-camera/pages/watermark-capture/index.uvue
  • 组件:uni_modules/laoqianjunzi-camera/components/laoqianjunzi-camera/laoqianjunzi-camera.uvue
  • 类型定义:uni_modules/laoqianjunzi-camera/utssdk/interface.uts

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android:CAMERA、RECORD_AUDIO iOS:Camera、Microphone、Photo Library、Photo Library Add Harmony:CAMERA、MICROPHONE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

仅用于相机预览、拍照、录像和图片水印输出

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议