阿里云美颜SDK的UTS插件
Project Start
2025-08-29
Crowdfunding Success
2025-08-31
Launch
2025-08-29
阿里云美颜 SDK uni-app 插件,基于 UTS 技术实现,提供实时美颜、虚拟化妆、背景虚化等视频处理能力。
请登录阿里云控制购买并申请美颜功能,获取到下载证书和参数。
将插件放置在项目的 uni_modules
目录下:
your-project/
├── uni_modules/
│ └── bsf-aliyun-queen/
└── ...
安卓端配置:
将证书文件放置到到插件app-android/assets目录下,
配置app-android/AndroidManifest.xml:
<application>
<meta-data
android:name="com.aliyun.alivc_license.licensekey"
android:value="xxxxx"/>
<meta-data
android:name="com.aliyun.alivc_license.licensefile"
android:value="xxxx.crt"/>
</application>
IOS端配置:
将证书文件放置到到插件app-ios/Resources目录下,
初始化的时候传入密钥和证书文件名
确保以下资源文件已正确配置:
queen.framework
及 queen-ios.Bundle
资源包<template>
<view class="container">
<!-- 美颜相机组件 -->
<bsf-queue-camera
ref="camera"
@onTakePhoto="handleTakePhoto"
@onGetFrame="handleGetFrame"
@onPermissionDeny="handlePermissionDeny"
@onPermissionPermit="handlePermissionPermit"
@onBeautyImage="handleBeautyImage"
/>
<!-- 控制按钮 -->
<view class="controls">
<button @click="takePhoto">拍照</button>
<button @click="toggleCamera">切换摄像头</button>
<button @click="toggleBeauty">开关美颜</button>
<button @click="toggleTorch">开关闪光灯</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
cameraRef: null
}
},
onReady() {
this.cameraRef = this.$refs.camera
},
methods: {
// 拍照
takePhoto() {
this.cameraRef?.takePhoto()
},
// 切换摄像头
toggleCamera() {
this.cameraRef?.toggleCamera()
},
// 开关美颜
toggleBeauty() {
this.cameraRef?.toggleBeauty()
},
// 开关闪光灯
toggleTorch() {
this.cameraRef?.toggleTorch()
},
// 拍照回调
handleTakePhoto(e) {
const { base64 } = e.detail
console.log('拍照结果:', base64)
// 处理拍照结果
},
// 实时帧数据回调
handleGetFrame(e) {
const { base64 } = e.detail
// 处理实时帧数据
},
// 权限被拒绝
handlePermissionDeny() {
console.log('相机权限被拒绝')
},
// 权限已授予
handlePermissionPermit() {
console.log('相机权限已授予')
},
// 图片美颜处理结果
handleBeautyImage(e) {
const { base64 } = e.detail
console.log('美颜处理结果:', base64)
}
}
}
</script>
事件名 | 说明 | 参数 |
---|---|---|
@onTakePhoto | 拍照完成回调 | {detail: {base64: string}} |
@onGetFrame | 实时帧数据回调 | {detail: {base64: string}} |
@onPermissionDeny | 相机权限被拒绝 | - |
@onPermissionPermit | 相机权限已授予 | - |
@onBeautyImage | 图片美颜处理完成 | {detail: {base64: string}} |
toggleCamera()
切换前后摄像头
this.$refs.camera.toggleCamera()
toggleBeauty()
开关美颜功能
this.$refs.camera.toggleBeauty()
toggleTorch()
开关闪光灯
this.$refs.camera.toggleTorch()
takePhoto()
拍照
this.$refs.camera.takePhoto()
stopCamera()
停止相机
this.$refs.camera.stopCamera()
destoryCamera()
销毁相机资源
this.$refs.camera.destoryCamera()
startFrame()
开始获取实时帧数据
this.$refs.camera.startFrame()
stopFrame()
停止获取实时帧数据
this.$refs.camera.stopFrame()
enableBeautyType(type, enable, mode)
启用/禁用特定美颜类型
参数:
type
(number): 美颜类型enable
(boolean): 是否启用mode
(number): 模式参数,默认为 0// 启用磨皮
this.$refs.camera.enableBeautyType(1, true, 0)
// 禁用美白
this.$refs.camera.enableBeautyType(2, false)
setBeautyParam(type, value)
设置美颜参数值
参数:
type
(number): 美颜参数类型value
(number): 参数值 (0.0 - 1.0)// 设置磨皮强度为 0.8
this.$refs.camera.setBeautyParam(1, 0.8)
// 设置美白强度为 0.6
this.$refs.camera.setBeautyParam(2, 0.6)
updateFaceShape(type, value)
更新面部塑形参数
参数:
type
(number): 塑形类型value
(number): 塑形强度 (0.0 - 1.0)// 设置瘦脸强度
this.$refs.camera.updateFaceShape(1, 0.5)
// 设置大眼强度
this.$refs.camera.updateFaceShape(2, 0.3)
beautifyImage(filePath)
对指定图片进行美颜处理
参数:
filePath
(string): 图片文件路径// 处理本地图片
this.$refs.camera.beautifyImage('/path/to/image.jpg')
值 | 常量名 | 功能描述 |
---|---|---|
0 | kQueenBeautyTypeSkinBuffing | 基础美颜(磨皮、锐化) |
1 | kQueenBeautyTypeFaceBuffing | 脸部美颜(去眼袋、法令纹、白牙、口红、腮红) |
2 | kQueenBeautyTypeMakeup | 美妆(整妆、高光、美瞳、口红、眼妆) |
3 | kQueenBeautyTypeFaceShape | 美型(瘦脸、瘦下巴、大眼、瘦鼻、美唇等) |
4 | kQueenBeautyTypeSkinWhiting | 基础美颜——美白 |
5 | kQueenBeautyTypeLUT | 滤镜(可指定 LUT 色卡) |
6 | kQueenBeautyTypeBackgroundProcess | 背景处理(实景抠图、背景虚化) |
7 | kQueenBeautyTypeAutoFilter | 智能美颜 |
8 | kQueenBeautyTypeBodyShape | 美体 |
9 | kQueenBeautyTypeHandGestureDetect | 手势检测 |
10 | kQueenBeautyTypeFaceExpressionDetect | 脸部表情检测 |
11 | kQueenBeautyTypeHairColor | 换发色 |
12 | kQueenBeautyTypeAutoFaceShape | 智能美型 |
13 | kQueenBeautyTypeFaceDetect | 人脸检测 |
14 | kQueenBeautyTypeBodyDetect | 人体检测 |
15 | kQueenBeautyTypeHSV | 色相/饱和度/明度(HSV 调节) |
16 | kQueenBeautyTypeFaceMosaicing | 人脸打马赛克 |
17 | kQueenBeautyTypeARWriting | 隔空写字特效 |
18 | kQueenBeautyTypedConcentrationDetect | 专注度检测 |
19 | kQueenBeautyTypedAbnormalActionDetect | 异常行为(物体)检测 |
20 | kQueenBeautyTypedLivingHumanDetect | 活体检测 |
21 | kQueenBeautyTypeMax | 最大值(类型数量) |
值 | 常量名 | 功能描述 |
---|---|---|
0 | kQueenBeautyFilterModeDefault | 默认模式 |
1 | kQueenBeautyFilterModeSkinBuffing_Natural | 磨皮—自然模式 |
2 | kQueenBeautyFilterModeSkinBuffing_Strong | 磨皮—明显(强)模式 |
11 | kQueenBeautyFilterModeFaceShape_Baseline | 美型—基准线模式 |
12 | kQueenBeautyFilterModeFaceShape_Main | 美型—主流模式 |
13 | kQueenBeautyFilterModeFaceShape_High | 美型—偏大变化(高)模式 |
14 | kQueenBeautyFilterModeFaceShape_Max | 美型—夸张(最大)模式 |
21 | kQueenBeautyFilterModeFaceMakeup_Baseline | 美妆—基准线模式 |
22 | kQueenBeautyFilterModeFaceMakeup_High | 美妆—强烈(高)模式 |
31 | kQueenBeautyFilterModeArWriting_Writer | AR 隔空写字—写字(作者)模式 |
32 | kQueenBeautyFilterModeArWriting_Drawer | AR 隔空写字—绘画(画家)模式 |
值 | 功能描述 | 参数范围 | 前提 |
---|---|---|---|
1 | 磨皮 Buffing | [0, 1] | 开启 基础美颜 |
2 | 锐化 Sharpen | [0, 1] | 开启 基础美颜 |
3 | 美白 Whitening | [0, 1] | 开启 基础美颜 |
4 | 去眼袋 Remove Pouch | [0, 1] | 开启 高级美颜 |
5 | 去法令纹 Remove Nasolabial Folds | [0, 1] | 开启 高级美颜 |
6 | 色卡滤镜强度 Filter Alpha | [0, 1] | 开启 滤镜 |
7 | 漂白牙齿 White Teeth | [0, 1] | 开启 高级美颜 |
8 | 口红 Lipstick | [0, 1] | 开启 高级美颜 |
9 | 腮红 Blush | [0, 1] | 开启 高级美颜 |
10 | 口红色相 Lipstick Color Param | [-0.5, 0.5] | 开启 高级美颜 |
11 | 口红饱和度 Lipstick Gloss Param | [0, 1] | 开启 高级美颜 |
12 | 口红明度 Lipstick Brightness | [0, 1] | 开启 高级美颜 |
13 | 亮眼 Brighten Eye | [0, 1] | 开启 高级美颜 |
14 | 红润 Skin Red | [0, 1] | 开启 高级美颜 |
15 | 祛皱纹 Wrinkles | [0, 1] | 开启 高级美颜 |
16 | 祛暗沉 Brighten Face | [0, 1] | 开启 高级美颜 |
20 | 祛脖颈纹 Neck | [0, 1] | 开启 高级美颜 |
21 | 祛额头纹 Forehead | [0, 1] | 开启 高级美颜 |
22 | 饱和度 Saturation | [-1, 1] | 开启 色相饱和度明度 |
23 | 对比度 Contrast | [-1, 1] | 开启 色相饱和度明度 |
24 | 人脸马赛克 Face Mosaicing | [0, 1] | 开启 人脸打马赛克 |
值 | 功能描述(中英文) | 参数范围 | 前提 |
---|---|---|---|
0 | 颧骨 CutCheek | [0, 1] | 无 |
1 | 削脸 CutFace | [0, 1] | 无 |
2 | 瘦脸 ThinFace | [0, 1] | 无 |
3 | 脸长 LongFace | [0, 1] | 无 |
4 | 下巴缩短 LowerJaw | [-1, 1] | 无 |
5 | 下巴拉长 HigherJaw | [-1, 1] | 无 |
6 | 瘦下巴 ThinJaw | [0, 1] | 无 |
7 | 瘦下颌 ThinMandible | [0, 1] | 无 |
8 | 大眼 BigEye | [0, 1] | 无 |
9 | 眼角1 EyeAngle1 | [0, 1] | 无 |
10 | 眼距 Canthus | [-1, 1] | 无 |
11 | 拉宽眼距 Canthus1 | [-1, 1] | 无 |
12 | 眼角2 EyeAngle2 | [-1, 1] | 无 |
13 | 眼睛高度 Eye Height | [-1, 1] | 无 |
14 | 瘦鼻 ThinNose | [0, 1] | 无 |
15 | 鼻翼 Nosewing | [0, 1] | 无 |
16 | 鼻长 NasalHeight | [-1, 1] | 无 |
17 | 鼻头长 NoseTipHeight | [-1, 1] | 无 |
18 | 唇宽 Mouth Width | [-1, 1] | 无 |
19 | 嘴唇大小 Mouth Size | [-1, 1] | 无 |
20 | 唇高 Mouth High | [-1, 1] | 无 |
21 | 人中 Philtrum | [-1, 1] | 无 |
22 | 发际线 Hair Line | [-1, 1] | 无 |
23 | 嘴角上扬(微笑)Smile | [0, 1] | 无 |
24 | 最大值(保留)MAX | - | 系统保留 |
int QUEEN_OK = 0; int QUEEN_FAIL = -1; int QUEEN_INVALID_HANDLE = -2; int QUEEN_INVALID_PARAMS = -3; int QUEEN_TIMEOUT = -4; int QUEEN_FILE_ERROR = -5; int QUEEN_FILE_NOT_EXIST = -6; int QUEEN_UNZIP_ERROR = -7; int QUEEN_NET_ERROR = -8; int QUEEN_INVALID_LICENSE = -9; int QUEEN_NO_EFFECT = -10;
export default {
onReady() {
const camera = this.$refs.camera
// 启用基础美颜
camera.enableBeautyType(1, true) // 磨皮
camera.enableBeautyType(2, true) // 美白
// 设置美颜强度
camera.setBeautyParam(1, 0.8) // 磨皮强度
camera.setBeautyParam(2, 0.6) // 美白强度
// 设置面部塑形
camera.updateFaceShape(1, 0.3) // 轻微瘦脸
camera.updateFaceShape(2, 0.2) // 轻微大眼
}
}
export default {
methods: {
async processImage() {
// 选择图片
uni.chooseImage({
count: 1,
success: (res) => {
const imagePath = res.tempFilePaths[0]
// 对图片进行美颜处理
this.$refs.camera.beautifyImage(imagePath)
}
})
},
handleBeautyImage(e) {
const { base64 } = e.detail
// 处理美颜后的图片
console.log('美颜处理完成:', base64)
// 可以保存到相册或显示
// ...
}
}
}
export default {
methods: {
startVideoProcess() {
// 开始获取实时帧
this.$refs.camera.startFrame()
},
stopVideoProcess() {
// 停止获取实时帧
this.$refs.camera.stopFrame()
},
handleGetFrame(e) {
const { base64 } = e.detail
// 处理实时帧数据,可以用于:
// 1. 实时滤镜效果
// 2. 人脸识别
// 3. 手势识别
// 4. 其他 AI 分析
}
}
}
性能优化
权限处理
资源管理
destoryCamera()
释放资源兼容性
文档正在制作中,敬请期待...
No versions released yet