天天看點

阿裡雲人臉識别NodeJS調用示例參考

作者:俏巴

概述

前面分别給出了關于 阿裡雲人臉識别Java調用示例參考 阿裡雲人臉識别C#調用示例參考 阿裡雲人臉識别Python3調用示例參考 阿裡雲人臉識别PHP調用示例參考 。本文主要介紹DodeJS調用阿裡雲人臉識别服務,參數等的擷取參考 阿裡雲人臉識别使用流程簡介

Code Sample

1、使用本地圖檔

var request = require('request');
var url = require('url');
var crypto = require('crypto');
var date = new Date().toUTCString()
// 這裡填寫AK和請求
var ak_id = '';
var ak_secret = '';           

// 讀取本地圖檔并轉base64編碼 var fs = require("fs"); var filePath = "time.jpeg"; var imageData = fs.readFileSync(filePath); // 例:fileUrl="D:\test\test.bmp" var imageBase64 = imageData.toString("base64");

var options = { url : '

https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute

', method: 'POST', body: '{"type": "1", "content":"'+imageBase64+'"}', headers: {

<span class="hljs-string">'accept'</span>: <span class="hljs-string">'application/json'</span>,
<span class="hljs-string">'content-type'</span>: <span class="hljs-string">'application/json'</span>,
<span class="hljs-string">'date'</span>: date,
<span class="hljs-string">'Authorization'</span>: <span class="hljs-string">''</span>                

} };

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'); }; // step1: 組stringToSign [StringToSign = #{method}\n#{accept}\n#{data}\n#{contentType}\n#{date}\n#{action}] var body = options.body || ''; var bodymd5; if(body === void 0 || body === ''){ bodymd5 = body; } else { bodymd5 = md5(new Buffer(body)); } console.log(bodymd5) 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; console.log("step1-Sign string:", stringToSign); // step2: 加密 [Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )] var signature = sha1(stringToSign, ak_secret); // console.log("step2-signature:", signature); // step3: 組authorization header [Authorization = Dataplus AccessKeyId + ":" + Signature] var authHeader = "Dataplus " + ak_id + ":" + signature; console.log("step3-authorization Header:", authHeader); options.headers.Authorization = authHeader; console.log('authHeader', authHeader); // step4: send request function callback(error, response, body) { if (error) {

<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"error"</span>, error)                

} console.log("step4-response body:", response.statusCode, body) } request(options, callback);

2、使用網絡圖檔

var request = require('request');
var url = require('url');
var crypto = require('crypto');
var date = new Date().toUTCString()
// 這裡填寫AK和請求
var ak_id = '';
var ak_secret = '';
var options = {
  url : '        https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute               ',
  method: 'POST',
  body: '{"type": "0", "image_url":"https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1553926699&di=3e4484731c8897c57e67b3f632801f9a&src=        http://b-ssl.duitang.com/uploads/item/201603/28/20160328121906_ErzAB.jpe               g"}',
  headers: {           
<span class="hljs-string">'accept'</span>: <span class="hljs-string">'application/json'</span>,
<span class="hljs-string">'content-type'</span>: <span class="hljs-string">'application/json'</span>,
<span class="hljs-string">'date'</span>: date,
<span class="hljs-string">'Authorization'</span>: <span class="hljs-string">''</span>                

} };

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'); }; // step1: 組stringToSign [StringToSign = #{method}\n#{accept}\n#{data}\n#{contentType}\n#{date}\n#{action}] var body = options.body || ''; var bodymd5; if(body === void 0 || body === ''){ bodymd5 = body; } else { bodymd5 = md5(new Buffer(body)); } console.log(bodymd5) 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; console.log("step1-Sign string:", stringToSign); // step2: 加密 [Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )] var signature = sha1(stringToSign, ak_secret); // console.log("step2-signature:", signature); // step3: 組authorization header [Authorization = Dataplus AccessKeyId + ":" + Signature] var authHeader = "Dataplus " + ak_id + ":" + signature; console.log("step3-authorization Header:", authHeader); options.headers.Authorization = authHeader; console.log('authHeader', authHeader); // step4: send request function callback(error, response, body) { if (error) {

<span class="hljs-built_in">console</span>.log(<span class="hljs-string">"error"</span>, error)                

} console.log("step4-response body:", response.statusCode, body) } request(options, callback);

測試結果

阿裡雲人臉識别NodeJS調用示例參考