【uni-app x】告别系统相机限制!三端通用自定义相机组件:任意布局、静默拍照、录像、水印叠加、连拍回图一次搞定
正文
为什么还要自己写相机?
开发 App 时你是不是也遇到过这些坑:
- 系统相机界面固定,想加个自定义遮罩/水印/操作栏?做不到。
- 业务需要静默拍照(不显示拍照瞬间、无快门声),系统相机根本不提供。
- 巡检、打卡、取证类应用要在照片上叠加时间地点水印,只能拍完再拿 Canvas 硬拼,画质受损还麻烦。
- 连拍、批量回图?更是无从下手。
uni-app x 插件市场里要么是"已淘汰"的旧原生插件,要么只支持单端。mj-custom-camera 就是冲着这个缺口来的。
它是什么?
一套基于 uni-app x + UTS 标准模式组件 开发的三端(Android / iOS / HarmonyOS)自定义相机插件,一次编写,三端运行,不依赖任何三方 SDK,纯原生能力封装。
功能清单
- 📷 任意布局预览:相机画面嵌入自定义 UI,遮罩、网格线、操作按钮随意摆放
- 🤫 静默拍照:支持无快门无提示抓拍,取证/打卡场景必备
- 🎬 录像:带时长控制与实时预览
- 💧 水印叠加:时间、地点、自定义文字一键合成进照片,原生级清晰度
- ⚡ 连拍批量回图:一次触发连续抓拍,批量回调
- 🔄 前后摄像头切换 + 闪光灯:基础能力全都有
- 🧩 静态 API:可完全脱离组件,代码里直接调用
技术亮点(为什么它快且稳)
- Android 基于 Camera2 API、iOS 基于 AVFoundation、鸿蒙基于 CameraKit,全是各平台官方原生能力,不走 WebView 中转
- 水印直接在原生层合成,无二次压缩,画质无损
- 拍照结果双写系统相册(Android 10+ MediaStore),图库立即可见
- UTS 单包集成,无 AAR/SDK 冲突,随 uni_modules 一键引入
接入有多简单?
xml
<!-- pages/index/index.uvue -->
<mj-custom-camera
mode="photo"
:watermark="{ enabled: true, text: '2026-09-27 阿克苏' }"
@take="onTake"
@error="onError">
</mj-custom-camera>
ts
function onTake(path: string) {
uni.showToast({ title: "拍照成功", icon: "none" })
// path 即图片本地路径,可直接展示/上传
}
引入 uni_modules 后即可使用,标准基座即可体验,无需自定义基座。
兼容性
- 仅支持 uni-app x(App 端)
- Android 5.0+ / iOS 12+ / HarmonyOS
- 权限自动申请,拍照结果自动入库
插件链接:https://ext.dcloud.net.cn/plugin?name=mj-custom-camera
如果你也被系统相机的各种限制折磨过,这个插件能帮你省下一整个原生开发的工期。觉得有用的话,点赞收藏,评论区聊聊你的场景。
