阿里云人脸比对API封装
这是根据封装是根据阿里云官方给的Demo进行修改的,当时是因为编写微信小程序云函数需要使用到阿里云人脸比对接口,才对其进行封装的。
记录下来,方便下次使用。
复制下来可以直接使用。
用到的依赖如下,使用npm安装:
- request
- url
- crypto
/**
* 文件说明:阿里云人脸比对API封装
*/ var request = require('request');
var url = require('url');
var crypto = require('crypto');
var date = new Date().toUTCString() /////////////////////////////////////////////////////////////////////////
/**
* 配置信息
* ak_id :阿里云控制台获取的AccessKey
* ak_secret :阿里云控制台获取的AccessKeySecret
* Api_Url :阿里云控制台获取Api接口地址
*/
// AccessKey
var ak_id = '';
// AccessKeySecret
var ak_secret = '';
// APIURL
var Api_Url = '' /**
* 读取本地图片并转base64编码
*/
// 图片1
var fs = require("fs");
var filePath = "01.jpg";
var imageData = fs.readFileSync(filePath);
var imageBase64 = imageData.toString("base64");
//图片2
var fs = require("fs");
var filePath = "02.jpg";
var imageData = fs.readFileSync(filePath);
var imageBase64_2 = imageData.toString("base64"); var options = {
url: Api_Url,
method: 'POST',
body: '{"type": "1", "content_1":"' + imageBase64 + '","content_2":"' + imageBase64 + '"}',
headers: {
'accept': 'application/json',
'content-type': 'application/json',
'date': date,
'Authorization': ''
}
};
///////////////////////////////////////////////////////////////////////// md5 = function (buffer) {
var hash;
hash = crypto.createHash('md5');
hash.update(buffer);
return hash.digest('base64');
}; sha1 = function (stringToSign, secret) {
var signature;
return signature = crypto.createHmac('sha1', secret).update(stringToSign).digest().toString('base64');
}; var body = options.body || '';
var bodymd5;
if (body === void 0 || body === '') {
bodymd5 = body;
} else {
bodymd5 = md5(new Buffer(body));
} var stringToSign = options.method + "\n" + options.headers.accept + "\n" + bodymd5 + "\n" + options.headers['content-type'] + "\n" + options.headers.date + "\n" + url.parse(options.url).path; var signature = sha1(stringToSign, ak_secret);
var authHeader = "Dataplus " + ak_id + ":" + signature;
options.headers.Authorization = authHeader; // 封装函数
function AliFace(options) {
let promise = new Promise(function (resolve, reject) {
request(options, (error, response, body) => {
// 失败
if (error) {
console.log("error", error)
reject()
}
console.log("step4-response body:", response.statusCode, body)
console.log(typeof (body))
// 成功
// 注意:这里的body是string类型
resolve(body)
})
})
return promise;
} /**
* 调用接口进行测试
*/
AliFace(options).then(
function (res) {
console.log(res)
}
)
阿里云人脸比对API封装的更多相关文章
- 阿里云OSS 图片处理api(custom)
阿里云OSS 图片处理api(custom) 阿里云对象存储服务(Object Storage Service, 简称OSS) 学习了:https://blog.csdn.net/u014559227 ...
- 阿里云OSS文件上传封装
1.先用composer安装阿里云OSS的PHPSDK 2.配置文件里定义阿里云OSS的秘钥 3.在index控制器里的代码封装 <?php namespace app\index\contro ...
- Java 使用阿里云短信的API接口
亲们上午好,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等.(我这里只讲一个 ...
- .NET 中使用阿里云短信的 API 接口
小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信 ...
- 阿里云人脸1:N搜索开源版-Java版(文末附开源地址)
一.人脸检测相关概念 人脸检测(Face Detection)是检测出图像中人脸所在位置的一项技术,是人脸智能分析应用的核心组成部分,也是最基础的部分.人脸检测方法现在多种多样,常用的技术或工具大 ...
- 开源版-阿里云人脸搜索M:N,人脸比对1:1
一.人脸搜索概要 本项目是阿里云视觉智能开放平台的人脸1:N的开源替代,项目中使用的模型均为开源模型,项目支持milvus和proxima向量存储库,并具有较高的自定义能力. 项目使用纯Java开发, ...
- 阿里云OSS存储前端API上传(签名上传)
一.创建用户 在阿里云创建用户https://ram.console.aliyun.com/users,并勾选Open API 保存好信息,很重要,返回后就再也找不到了 新增授权(这里视个人情况,需要 ...
- 阿里云人脸识别测试接口出错 返回Body:{ "errno": 1031, "err_msg": "Invalid Image URL.", "request_id": "cdbe2927-e1bb-4eb1-a603-8fcd4b0b7fc8" }
错误信息如下 返回Body:{ "errno": 1031, "err_msg": "Invalid Image URL.", " ...
- 阿里云人脸识别测试接口出错 返回Body:{ "errno": 3002, "err_msg": "ILLEGAL_PARAMETERS", "request_id": "672cba83-cf93-4ef4-9ce5-d87e51601632" }
错误信息如下 返回Body:{ "errno": 3002, "err_msg": "ILLEGAL_PARAMETERS", ...... ...
随机推荐
- Hadoop 三大调度器源码分析及编写自己的调度器
如要转载,请注上作者和出处. 由于能力有限,如有错误,请大家指正. 须知: 我们下载的是hadoop-2.7.3-src 源码. 这个版本默认调度器是Capacity调度器. 在2.0.2-alph ...
- C - Woodcutters
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description Little ...
- vim 退出命令(保存、放弃保存)
在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell:若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell. 在末行模式下,输入命令 : ...
- 浅谈字符串哈希 By cellur925
前言 蒟蒻最近在复习字符串算法...但正如之前所说,我OI太菜被关起来了,本蒟蒻只能从最简单的哈希入手了TAT.而别的dalao都在学习AC自动机/后缀数组等高到不知哪里去的算法qwq. 基本思想 映 ...
- Hdu 4725 The Shortest Path in Nya Graph (spfa)
题目链接: Hdu 4725 The Shortest Path in Nya Graph 题目描述: 有n个点,m条边,每经过路i需要wi元.并且每一个点都有自己所在的层.一个点都乡里的层需要花费c ...
- Android课程设计第一天Android Studio安装
注意:课程设计只为完成任务,不做细节描述~ 学校有一个Android的课设,所以顺便把Android Studio安装了上去. 实际上安装过程并不复杂,只有几个地方需要注意~ 安装包可以去http:/ ...
- Codeforces Round #418 (Div. 2) A
Description A few years ago, Hitagi encountered a giant crab, who stole the whole of her body weight ...
- queue POJ 2259 Team Queue
题目传送门 题意:先给出一些小组成员,然后开始排队.若前面的人中有相同小组的人的话,直接插队排在同小组的最后一个,否则只能排在最后面.现在有排队和出队的操作. 分析:这题关键是将队列按照组数分组,用另 ...
- PopupWindow(1)简介
PopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出 ...
- JAVA常用知识总结(三)——JAVA虚拟机
先附一张JAVA虚拟机内存结构图: 其中JAVA虚拟机的线程问题<为什么JAVA虚拟机分为线程共享和非线程共享?>一文中已经有详细介绍,本文从面试中常问的一些JAVA虚拟机问题出发,主要从 ...