更新记录

v1.5.2(2024-11-22) 下载此版本

1,优化部分流程 2,重新init的时候创建dom失败的问题


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.8.1 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
×

face-effet logo

FACE-EFFET.JS

一款人脸样式框架

Effet.js

Effet.js 是一个轻量级的 JavaScript 框架,专为前端开发提供人脸检测、登录、打卡等功能。它具有易于使用的 API,可以快速集成人脸识别到你的 Web 应用中。

官方详细文档: 官方网站

安装

你可以通过 npm 安装 Effet.js,也可以直接通过 CDN 引入。

使用 npm 安装

首先,在项目根目录下运行以下命令安装 Effet.js

npm i face-effet

使用 CDN 引入

如果你不想通过 npm 安装,可以使用以下方式通过 CDN 直接引入 Effet.js

<script src="https://unpkg.com/face-effet/effet/effet.js"></script>

项目结构

├── effet
│   ├── src
│   │   ├── components
│   │   │   ├── enums
│   │   │   │   └── Constant.ts -------公共的枚举
│   │   │   ├── AppState.ts -----------内部初始化数据
│   │   │   └── FaceManager.ts --------管理当前dom单例,用于消息替换
│   │   ├── core
│   │   │   ├── action ----------------动作函数,处理各种动作,例如人脸添加、登录、睡眠检测、打卡
│   │   │   │   ├── addFace
│   │   │   │   │   └── index.js ------处理人脸添加的主要逻辑
│   │   │   │   ├── checkLogin
│   │   │   │   │   └── index.js ------处理登录检测的逻辑
│   │   │   │   ├── checkSleep
│   │   │   │   │   └── index.js ------处理睡眠检测的逻辑
│   │   │   │   ├── clockIn
│   │   │   │   │   └── index.js ------处理打卡的主要逻辑
│   │   │   │   └── faceAction.js - 动作函数入口
│   │   │   ├── before ----------------动作前的预处理逻辑
│   │   │   │   ├── checkLogin
│   │   │   │   │   └── index.js ------登录前置函数操作
│   │   │   │   └── faceBefore.js -预处理入口
│   │   │   ├── db --------------------数据库相关逻辑
│   │   │   │   └── db.js
│   │   │   ├── defaultAssign ---------默认配置和参数分配
│   │   │   │   └── assign.js
│   │   │   ├── dom -------------------DOM 操作相关逻辑
│   │   │   │   ├── createFaceElements.js -创建人脸相关的 DOM 元素
│   │   │   │   └── defaultElement.js ---默认元素配置
│   │   │   ├── log ---------屏蔽插件相关内警告
│   │   │   │   └── log.js
│   │   │   └── index.js --------------核心模块的入口文件
│   │   ├── styles --------------------样式文件
│   │   │   ├── template
│   │   │   │   ├── addFace -----------人脸添加的样式模板
│   │   │   │   │   ├── index.css -----添加人脸的样式文件
│   │   │   │   │   └── index.js ------添加人脸的逻辑
│   │   │   │   └── checkLogin --------登录检测的样式模板
│   │   │   │       ├── index.css -----登录检测的样式文件
│   │   │   │       └── index.js ------登录检测的逻辑
│   │   │   ├── faceColor.js ----------与人脸样式颜色相关的逻辑
│   │   │   └── root.css --------------全局样式
│   │   ├── util ----------------------通用工具函数
│   │   │    ├── cameraAccessUtils.js --处理摄像头访问的工具
│   │   │    ├── cameraUtils.js --------摄像头操作的通用工具
│   │   │    ├── checkIfMeetsUtils.js --检查条件满足的工具
│   │   │    ├── deviceUtil.js ---------设备相关的工具函数
│   │   │    ├── distanceUtils.js ------距离计算工具
│   │   │    ├── drawingUtils.js -------绘制相关的工具函数
│   │   │    ├── faceMesh.js -----------人脸网格处理相关逻辑
│   │   │    ├── getImageReturnUtils.js -处理图像返回的工具
│   │   │    ├── getKey.js -------------获取键值的工具函数
│   │   │    ├── imageUtils.js ---------图像处理相关工具
│   │   │    └── isEmptyFunctionUtil.js -检查空函数的工具
│   │   └── index.js ----------------------程序的主要入口 

动作新增

如果我们需要新增一个新的动作

(1)Constant.ts 首先在当前枚举的 FACE_TYPE 新增一个类别,如:'faceNew'

(2)在 action 文件夹,创建一个 'faceNew' 的文件夹,然后在当前文件夹创建index.js

(3)创建完成后,基本入口都是一样的,具体参考其他的人脸动作,如下:

export default (appData,results,currentObj,callBackResult,stopRecording,startRecording) => {
    // 在这里写你具体动作算法
};

(4)使用方式

<div id="myface"></div>

<script>
    effet.init({
        el: 'myface',
        type:'faceNew',
        callBack: (data) => {
            console.log(data);
        }
    });
</script>

(5)默认值设置,可在 assign.js 设置你的默认值,具体参考其他值的设置方式

(6)样式编辑,基于 appearance 参数,判断当前是否有样式,在 assign.js 人脸打卡跟睡眠检测被强制为 false, 如果你当前新增的这个类别也没有样式,应该跟其他两个模式一样,强制为false,如果需要样式,则需要在 styles/template文件夹下面新增一个文件夹叫 faceNew 然后在这个文件夹创建index.css 跟index.js 然后写具体的操作

项目依赖

以下是项目中使用到的主要依赖及其版本信息:

  • Babel Core @babel/core: ^7.25.2
  • Babel Preset Env @babel/preset-env: ^7.25.3
  • Babel Loader babel-loader: ^9.1.3
  • CSS Loader css-loader: ^7.1.2
  • CSS Minimizer Webpack Plugin css-minimizer-webpack-plugin: ^7.0.0
  • File Loader file-loader: ^6.2.0
  • Mini CSS Extract Plugin mini-css-extract-plugin: ^2.9.1
  • PostCSS postcss: ^8.4.41
  • PostCSS Loader postcss-loader: ^8.1.1
  • Style Loader style-loader: ^4.0.0
  • TS Loader ts-loader: ^9.5.1
  • TypeScript typescript: ^5.5.4
  • Webpack webpack: ^5.0.0
  • Webpack CLI webpack-cli: ^4.0.0

特别注意,本项目中使用到了 facemesh.js,请确保使用的是最新版本以获取最新的功能和改进。

使用方式

具体使用和 API 文档请查看 官方网站,以获取详细信息和更多示例。

许可证

本项目采用 MIT 许可证,详细信息请查看 LICENSE 文件。

隐私、权限声明

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

询问摄像头权限

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

Effet是一款人脸前端样式框架,不具备互联网接入、网络数据存储、通讯传输以及窃取用户隐私, 特别声明:不保存用户人脸照片 Effet.js 是一个轻量级的纯前端人脸动画框架,旨在为开发者提供生动的面部动态效果展示。该框架不会也不具备保存用户人脸照片或图像的功能。 Effet.js 仅用于人脸特征的实时识别与动画,不涉及任何与用户隐私相关的数据存储或处理功能。 引入 FaceMesh.js 插件 Effet.js 框架内集成了开源项目 FaceMesh.js 的相关插件文件,包括但不限于以下内容: face_mesh.binarypb face_mesh_solution_packed_assets.data face_mesh_solution_packed_assets_loader.js face_mesh_solution_simd_wasm_bin.js face_mesh_solution_simd_wasm_bin.wasm 这些插件的引入是为了实现面部特征的识别和动画效果的优化,框架不涉及对插件本身功能的修改或扩展。 文件缓存机制 Effet.js 框架会首先通过 CDN(内容分发网络)下载上述插件文件,并将它们缓存在用户浏览器的 IndexedDB 中。 这种缓存机制旨在提高页面加载速度,减少带宽消耗。IndexedDB 是浏览器提供的本地存储解决方案,用户可通过浏览器自行管理或删除缓存的文件。 插件文件用途说明 face_mesh.binarypb 和 face_mesh_solution_packed_assets.data:用于存储面部识别和特征点数据。 face_mesh_solution_packed_assets_loader.js:用于加载必要的资源文件,确保面部识别功能的正常运行。 face_mesh_solution_simd_wasm_bin.js 和 face_mesh_solution_simd_wasm_bin.wasm:为面部识别功能提供高性能的 WebAssembly 支持,确保识别过程高效流畅。 这些文件的主要目的是为了实现面部特征的识别和追踪动画,Effet.js 框架不会使用它们进行其他用途。

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

许可协议

MIT协议

暂无用户评论。

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