更新记录
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:
CAMERA、RECORD_AUDIO - iOS:
Camera、Microphone、Photo Library、Photo Library Add - Harmony:
CAMERA、MICROPHONE
如果你的业务需要保存照片或视频到相册,还需要保证目标平台的相册写入权限链路已经打通。
安装后如何验证
安装插件后,可以直接打开插件内置示例页:
- 示例页路径:
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:是否启用anchor:topLeft、topRight、bottomLeft、bottomRighttitle:水印标题lines:多行说明文案items:键值项面板列表textColor、titleColor、detailColor:文字颜色backgroundColor:背景色padding、lineSpacing:内边距与行距fontSize、titleFontSize、detailFontSize:字号cornerRadius:圆角panelWidth:面板宽度
元信息配置 LaoqianjunziCameraMetaConfig
用于时间、地址、业务字段聚合展示:
titletimeTextaddressTextlinesitems
组件内部会把 meta 与 watermark 合并,用于预览和输出图像的同构展示。
绿幕配置 LaoqianjunziCameraGreenScreenConfig
如果你的场景涉及抠像或替换背景,可用这些字段:
enabledstartColor/endColormorphOpen/morphClosedilate/erodegaussianBlurscalingRatiopreviewWidth/previewHeightbackgroundColortransparentPreview
全屏水印拍照
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 xApp 端页面默认不可滚动,示例页这类长页面请使用scroll-view包裹。- 使用
display: flex时,请显式声明flex-direction,避免和 Web 默认值混淆。 uni-app xApp 端样式以 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

收藏人数:
https://gitee.com/laoqianjunzi/laoqianjunzi-camera
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 1169
赞赏 2
下载 12440709
赞赏 1934
赞赏
京公网安备:11010802035340号