阿里云人脸比对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", ...... ...
随机推荐
- 安装Tomcat(windows系统和linux系统)
Tomcat不管是windows还是Linux版本,都是解压后就再配置一下就可以使用.安装Tomcat前必须先安装JDK,一般我们可以在eclipse中加入Tomcat来开发. 什么是Tomcat? ...
- apache禁止使用IP访问的实现方法
apache禁止访问目录列表 apache禁止访问目录列表对于开发人员来说还是蛮实用的,可以迅速查找根目录下的所有项目,但如果一个挂在互联网上的服务器为了提高安全性就必须禁止访问目录列表. 找到Apa ...
- 基础总结篇之二:Activity的四种launchMode (转载)
转自:http://blog.csdn.net/liuhe688/article/details/6754323 合抱之木,生於毫末:九層之台,起於累土:千里之行,始於足下.<老子> 今天 ...
- python __builtins__ bool类 (6)
6.'bool', 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False. class bool(int) # 继承于int类型 | bool(x) -> bool # 创建boo ...
- 手机测试用例-wap测试用例
Software Test Case P/F comment tester test time P/F comment tester ID 功能描述 操作步骤 预期结果 备注 wap_001 wap ...
- 第十篇 .NET高级技术之委托
委托是一种可以指向方法的数据类型,可以声明委托类型变量. 声明委托的方式:delegate返回值类型 委托类型名(参数) 比如delegate void MyDel(int n) 注意这里的除了前 ...
- bryce1010专题训练——树状数组
Bryce1010模板 1.一维树状数组 https://vjudge.net/contest/239647#problem/A[HDU1556] #include<bits/stdc++.h& ...
- Educational Codeforces Round 24 D
Alice and Bob got very bored during a long car trip so they decided to play a game. From the window ...
- Throwing Dice LightOJ - 1064 || (勉强能用的)分数类
Throwing Dice LightOJ - 1064 方法: 设ans[i][j]表示i个骰子点数恰好为j的概率.那么ans[1][1]到ans[1][6]都为1/6. 显然,$ans[i][j] ...
- Distance in Tree CodeForces - 161D
Distance in Tree CodeForces - 161D 题意:给一棵n个结点的树,任意两点之间的距离为1,现在有点u.v,且u与v的最短距离为k,求这样的点对(u,v)的个数((u,v) ...