更新记录
1.0.1(2026-06-25)
修复部分缺陷
1.0.0(2026-06-25)
- 首发:原生 CameraX(Android) / AVFoundation(iOS) 自定义相机组件
<fsyang-camera>
- 预览自适应任意容器、所见即所得、横竖方向自动跟随
- 拍照:自定义成片宽度 + 自动选分辨率 + 按比例裁剪 + 实时水印 + EXIF/GPS 开关 + 无声拍照
- 录像:设备真实档位(4K/1080P/720P) + 帧率 + 音频开关 + 自动取封面
- 专业控制:曝光 / 变焦 / 点按对焦 / 两指缩放 / 闪光 / 前后摄
- 权限可独立申请;Android + iOS 双端一致
平台兼容性
uni-app(4.71)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
× |
× |
× |
√ |
√ |
√ |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
- |
× |
× |
uni-app x
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| × |
× |
× |
× |
- |
× |
自定义相机 fsyang-camera · 使用说明
原生 CameraX(Android) / AVFoundation(iOS) 自定义相机组件 <fsyang-camera>。
Android + iOS 双端一致,uni-app(vue3 / nvue) 通用。真机调试,需自定义基座 / 云打包。
🎨 界面 100% 自定义:组件只负责相机预览 + 拍照/录像/裁剪/水印等能力,所有按钮、布局、样式、交互都由你在自己的页面自由编写——文档/截图里的 UI 只是 demo 示例,想做成什么样都行,不锁定任何固定界面。
一、安装
- 在插件市场点「使用 HBuilderX 导入」,插件落到
uni_modules/fsyang-camera。
- 制作自定义调试基座(含原生依赖)后再真机运行;标准基座不含相机原生库。
- Android 录像如需收声,在
manifest.json → App 模块配置 → 权限 勾选 RECORD_AUDIO。
二、三步接入
<!-- 1. 放组件(nvue 用绝对定位铺满,flex:1 不生效) -->
<fsyang-camera
ref="cam"
style="position:absolute;left:0;top:0;right:0;bottom:0;"
:mode="mode" :position="position" :flash="flash" :photoWidth="1080"
@ready="onReady" @captured="onCapture" @error="onError" />
// 2. 申请权限
this.$refs.cam.requestPermission('camera,microphone')
// 3. 拍照 / 录像
this.$refs.cam.takePhoto()
this.$refs.cam.startRecord(); this.$refs.cam.stopRecord()
this.$refs.cam.switchCamera()
// 事件 payload 双端统一解析
parse(e){ let d=(e&&e.detail!=null)?e.detail:e; if(typeof d==='string'){try{d=JSON.parse(d)}catch(x){d={}}} return d||{} }
三、常用配置(Props)
| 属性 |
默认 |
说明 |
| mode |
photo |
photo 拍照 / video 录像 |
| position |
back |
back 后置 / front 前置 |
| flash |
off |
off / on / auto / torch |
| photoWidth |
1080 |
成片宽度,0 = 原图 |
| crop |
'' |
裁剪 JSON 串 {"x":0,"y":0,"w":1,"h":1}(0~1);空 = 不裁 |
| cropBox |
true |
是否显示裁剪取景绿框;false = 静默裁剪(不显框),仅 crop 开启时有意义 |
| watermark |
'' |
水印 JSON 串 {"on":true,"time":true,"location":"厦门","text":"内部资料"} |
| saveExif / saveLocation |
true / false |
写 EXIF / 写 GPS |
| silentCapture |
false |
无声拍照 |
| videoQuality / videoFps |
fhd / 30 |
录像档位与帧率 |
四、事件
| 事件 |
触发时机 |
回调数据(e.detail) |
| @ready |
相机初始化完成、可开始拍照时 |
设备能力:变焦/曝光范围、是否支持闪光、拍照分辨率上限、可用录像档位 |
| @captured |
拍照成功、照片生成后 |
path 照片路径 / width·height 宽高 / size 字节大小 |
| @recordstop |
录像结束(手动停止或到时)后 |
path 视频路径 / cover 封面图 / size 大小 / duration 时长(秒) |
| @error |
出错时(权限被拒 / 设备异常 / 拍摄失败等) |
code 错误码 / message 错误说明 |
五、案例工程
fsyang-camera-demo.zip 为示例代码(拍照页 / 相册页):
导入后在插件市场点「试用」把本插件加入 uni_modules,做自定义基座即可真机运行。
六、售后
- 支持试用,先试后买;源码版含 Android + iOS 完整 uts 源码。
- 定制 / 对接:插件评论区留言。