更新记录

1.0.1(2024-03-16)

  • Android端只运行竖屏

1.0.0(2023-12-27)

新账号发布


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


特别提醒

  • 购买本插件前,请先试用,请先试用,请先试用,确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款。
  • 一定要使用正式版的License文件,不要使用测试版的License,否则造成不可逆的后果自行负责;
  • 如有使用上的疑问、bug,可以QQ(381996687)联系作者;
  • 作者可承接各种插件定制,价格美丽有意向可加q详谈;
  • 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;

推荐

  1. 结合OCR文字识别插件,识别身份证信息,可以轻松实现实名认证身份核验,插件地址:https://ext.dcloud.net.cn/plugin?id=16105

准备工作

插件接入

1.创建文件夹

在项目根目录下创建nativeplugins文件夹购买或试用插件将下载的授权文件License 放入Android:nativeplugins/YT-BDFace/android/assets/idl-license.face-android,iOS:nativeplugins/YT-BDFace/ios/idl-license.face-ios,文件夹和License名称必须和这里的一致。(没有对应的文件夹自行创建)。参照示例demo中nativeplugins/YT-BDFace将授权文件换成自己的即可。

2.选择插件打包(打自定义基座或云打包)

购买或试用该插件然后选中购买该插件项目的manifest.json 文件,选择App原生插件配置,选中云端插件,勾选对应的插件,配置相应的权限(见最下面”隐私、权限声明“)

3.引入插件

const bdFace = uni.requireNativePlugin('YT-BDFace');

4.调用

let licenseID = "";
if (plus.os.name == "Android") {
    licenseID = "换成自己的Android授权ID";
}else if(plus.os.name == "iOS"){
    licenseID = "换成自己的iOS授权ID";
}
console.log(licenseID)
// 原图
var imagePath = plus.io.convertLocalFileSystemURL("_doc/ImagePath");
// 抠图
var cropImagePath = plus.io.convertLocalFileSystemURL("_doc/CropImagePath");
let time = new Date().getTime();
var name = time + ".jpg"
bdFace.gatherFaceInfo({
    licenseID: licenseID,
    noActionAcquisition:false,//无动作采集--默认false
    actions: ["Eye", "Mouth", "HeadRight", "HeadLeft"],//采集动作组 --noActionAcquisition=true无效
    isRandom: true, //采集动作随机 默认按顺序--noActionAcquisition=true无效
    qualityLevel: 0, //质量等级  0、默认  1、宽松  2、严格
    timeOut: "15", //单个动作采集时间 --noActionAcquisition=true无效
    maxResultSize: 0.2, //压缩期望值 0.2M
    imagePath:imagePath,//存放原图
    cropImagePath:cropImagePath,//存放抠图
    imageName:name,
    camera: "front", //摄像头 front back 默认前置(目前后置摄像头仅iOS有效)
    isSound: true, //语音 
    isEnableSound:true,//进入采集页面语音播报是否打开(默认false isSound==true有效)
    tipsTextColor: "#6450a4", //提示文字色值
    tipSubTextColor: "#ff00ff", //副标题提示语
    progressBackgroundColor: "#666666", //刻度线背景色
    progressScaleColor: "#0000ff", //刻度线背色
    backgroundColor: "#FFFFFF", //背景色
    bottomCopyright: "人脸识别uniapp原生插件", //底部版权文案
    copyrightColor: "#00ff00", //版权文字色值
    showBottomImage: false, //显示底部logo图
    returnResultImage: true, //返回采集图片,默认返回
    switchCamera: true, //是否可切换摄像头 右上角多个切换摄像头按钮
    tips: { //提示文案不传使用默认值
        face_in_rect: "把你的脸移入框内",
        head_right:"头向右缓慢转"
    }
}, res => {
    if(res.code == "100"){//licenseID为空

    }else if(res.code == "200"){//鉴权成功,初始化成功

    }else if(res.code == "201"){//采集成功
    // res={
    //  code:"201",
    //  msg:"采集成功",
    //  originalImage:"原图base64",
    //  originalCropImage:"人脸抠图Base64",
    //  originalImagePath:"原图路径",
    //  originalCropImagePath:"人脸抠图路径"
    // }
        //this.collectionImage = res.originalImage
        //原始图
        this.collectionImage = res.originalImagePath;
        //抠图
        this.originalCropImage = res.originalCropImagePath;
        console.log("原图:"+res.originalImagePath);
        console.log("抠图:"+res.originalCropImagePath);
    }else{//失败

    }

    uni.showToast({
        title:res.msg,
        icon:'none',
        duration:1500
    })

});
  • 参数说明
参数 类型 说明
licenseID String 授权ID必传
actions array 动作组(默认["Eye","Mouth","HeadUp"])
isRandom bool 采集动作随机 默认(false)不随机
qualityLevel int 采集等级(0:默认1:宽松2:严格)默认0
timeOut int 采集超时
maxResultSize float 返回图片期望大小 默认0.2M
imagePath string 原图存储路径
cropImagePath String 人脸抠图存储路径
imageName String 图片名称
camera String 前后摄像头 front back默认:"front"(仅iOS后置摄像头有效)
isSound bool 是否显示右上角喇叭 默认:true
isEnableSound bool 进入采集页面是否默认开启语音播报(默认false,isSound=true有效)
tipsTextColor String 提示文字色值
tipSubTextColor String 副标题提示文字色值
progressBackgroundColor String 刻度线背景色
progressScaleColor String 选中刻度线色值
backgroundColor String 背景色
bottomCopyright String 底部版权
copyrightColor String 版权色值
showBottomImage true 是否底部logo
switchCamera true 是否可切换摄像头 右上角多个切换摄像头按钮
tips objc 提示语不传使用默认值
  • 动作组说明
参数 说明
Eye 眨眨眼
Mouth 张张嘴
HeadLeft 向左缓慢转头
HeadRight 向右缓慢转头
HeadUp 缓慢抬头
HeadDown 缓慢低头
  • tips说明
参数 默认
face_in_rect 请把脸移入框内
face_zoom_in 请将脸部靠近一点
face_zoom_out 请将脸部离远一点
occ_left_eye_shutdown 左眼未睁开
occ_right_eye_shutdown 右眼未睁开
occ_head_up 请略微抬头
occ_head_down 请略微低头
occ_head_left 请略微向左转头
occ_head_right 请略微向右转头
occ_left_eye 左眼有遮挡
occ_right_eye 右眼有遮挡
occ_nose 鼻子有遮挡
occ_mouth 嘴部有遮挡
occ_left_check 左脸颊有遮挡
occ_right_check 右脸颊有遮挡
occ_chin 下颚有遮挡
low_light 请使环境光线再亮些
keep 请握稳手机
timeout 检测超时
left_eye_close 左眼未睁开
right_eye_close 右眼未睁开
eye 眨眨眼
mouth 张张嘴
head_right 向右缓慢转头
head_left 向左缓慢转头
head_up 缓慢抬头
head_down 缓慢低头
good 非常好
  • 回调说明
状态码 说明
res.code == 100 LicenseID为空
res.code == 200 鉴权成功
res.code == 201 采集成功(返回采集图片base64已拼接data:image/png;base64,)res.originalImage
  • 清除缓存图片
bdFace.clearCacheWithFilePath(type == 0 ? this.collectionImage : this.originalCropImage,res=>{
    if(res.result == true){
        uni.showToast({
            title:"删除成功",
            icon:'none',
            duration:1500
        })
    }else{
        uni.showToast({
            title:"删除失败",
            icon:'none',
            duration:1500
        })
    }
});

完整示例

<template>
    <view class="content">
        <view class="btn" @click="btnAction">
            点击采集
        </view>
        <image :src="collectionImage" mode="widthFix"
            style="width: 200rpx;margin-top: 30rpx;background-color: aquamarine;" />
        <text @click="clearCacheWithFilePath(0)">删除缓存原图</text>
        <image :src="originalCropImage" mode="widthFix"
            style="width: 200rpx;margin-top: 30rpx;background-color: aquamarine;" />
        <text @click="clearCacheWithFilePath(1)">删除缓存抠图</text>
    </view>
</template>

<script>
    const bdFace = uni.requireNativePlugin('YT-BDFace');
    export default {
        data() {
            return {
                collectionImage: '', //采集成功图像
                originalCropImage: '',
                silentliveScore: '' //离线RGB 静默活体得分
            }
        },
        methods: {
            /**
             * Eye: 眨眨眼
             * Mouth: 张张嘴
             * HeadLeft: 向左缓慢转头
             * HeadRight:向右缓慢转头
             * HeadUp:缓慢抬头
             * HeadDown:缓慢低头
             */
            btnAction() {
                // LicenseId
                let licenseID = "";
                if (plus.os.name == "Android") {
                    licenseID = "******";
                } else if (plus.os.name == "iOS") {
                    licenseID = "*******";
                }
                console.log(licenseID)
                // 原图
                var imagePath = plus.io.convertLocalFileSystemURL("_doc/ImagePath");
                // 抠图
                var cropImagePath = plus.io.convertLocalFileSystemURL("_doc/CropImagePath");
                let time = new Date().getTime();
                var name = time + ".jpg"
                bdFace.gatherFaceInfo({
                    licenseID: licenseID,
                    noActionAcquisition:false,//无动作采集--默认false
                    actions: ["Eye", "Mouth", "HeadRight", "HeadLeft"],//采集动作组 --noActionAcquisition=true无效
                    isRandom: true, //采集动作随机 默认按顺序--noActionAcquisition=true无效
                    qualityLevel: 0, //质量等级  0、默认  1、宽松  2、严格
                    timeOut: "15", //单个动作采集时间 --noActionAcquisition=true无效
                    maxResultSize: 0.2, //压缩期望值 0.2M
                    imagePath: imagePath, //存放原图
                    cropImagePath: cropImagePath, //存放抠图
                    imageName: name,
                    camera: "front", //摄像头 front back 默认前置(目前仅iOS后置摄像头有效)
                    isSound: true, //语音 
                    isEnableSound:true,//进入采集页面语音播报是否打开(默认false isSound==true有效)
                    tipsTextColor: "#6450a4", //提示文字色值
                    tipSubTextColor: "#ff00ff", //副标题提示语
                    progressBackgroundColor: "#666666", //刻度线背景色
                    progressScaleColor: "#0000ff", //刻度线背色
                    backgroundColor: "#FFFFFF", //背景色
                    bottomCopyright: "人脸识别uniapp原生插件", //底部版权文案
                    copyrightColor: "#00ff00", //版权文字色值
                    showBottomImage: false, //显示底部logo图
                    returnResultImage: true, //返回采集图片,默认返回
                    switchCamera: true, //是否可切换摄像头 右上角多个切换摄像头按钮
                    tips: { //提示语
                        face_in_rect: "把你的脸移入框内",
                        head_right: "头向右缓慢转"
                    }
                }, res => {
                    if (res.code == "100") { //licenseID为空

                    } else if (res.code == "200") { //鉴权成功,初始化成功

                    } else if (res.code == "201") { //采集成功
                    // res={
                    //  code:"201",
                    //  msg:"采集成功",
                    //  originalImage:"原图base64",
                    //  originalCropImage:"人脸抠图Base64",
                    //  originalImagePath:"原图路径",
                    //  originalCropImagePath:"人脸抠图路径"
                    // }
                        //原始图
                        this.collectionImage = res.originalImagePath;
                        //抠图
                        this.originalCropImage = res.originalCropImagePath;
                        console.log("原图:" + res.originalImagePath);
                        console.log("抠图:" + res.originalCropImagePath);
                    } else { //失败

                    }

                    uni.showToast({
                        title: res.msg,
                        icon: 'none',
                        duration: 1500
                    })

                });
            },
            filterBase64(codeImages) {
                return codeImages.replace(/[\r\n]/g, "");
            },
            //清除图片
            clearCacheWithFilePath(type) {
                bdFace.clearCacheWithFilePath(type == 0 ? this.collectionImage : this.originalCropImage, res => {
                    if (res.result == true) {
                        uni.showToast({
                            title: "删除成功",
                            icon: 'none',
                            duration: 1500
                        })
                    } else {
                        uni.showToast({
                            title: "删除失败",
                            icon: 'none',
                            duration: 1500
                        })
                    }
                });

            }
        }
    }
</script>

<style>
    .content {
        width: 750rpx;
        flex: 1;
        flex-direction: column;
        align-items: center;
        display: flex;
        flex-direction: column;
    }

    .btn {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 750rpx;
        height: 80rpx;
        margin-top: 20rpx;
        background-color: chocolate;
        color: #ff8700;
    }
</style>

超好用插件推荐

获取设备唯一标识符:https://ext.dcloud.net.cn/plugin?id=16027

隐私、权限声明

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

android: android.permission.CAMERA、android.permission.READ_EXTERNAL_STORAGE、android.permission.WRITE_EXTERNAL_STORAGE、android.permission.INTERNET、android.permission.ACCESS_NETWORK_STATE、android.permission.ACCESS_WIFI_STATE、android.hardware.camera.autofocus。 iOS: 相机

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

插件自身不采集任何数据,插件使用的百度离线人脸采集SDK采集数据,请参考其官方说明:https://ai.baidu.com/ai-doc/FACE/Mk37c1pue

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

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问