如何解决Azure Face API-Node JS无法以二进制形式发送本地文件
我尝试使用这样的配置将base64表单图像发送到Azure Face-API
var config = {
method: 'post',url: endpoint,params: {
returnFaceId: true,returnFaceLandmarks: false,returnFaceAttributes: 'age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise'
},body:Buffer(facesBase64,'base64'),headers: {
'Ocp-Apim-Subscription-Key': subscriptionKey,'Content-Type': 'application/octet-stream'
}
};
但是它总是出现错误400。我发送的二进制格式是否错误? facesBase64
已经是Base64形式。
编辑
facesBase64
充满了base64这样的值
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ......
解决方法
我认为您无法将base64图像发送到Azure Face-API。
更新
将本地图像发送到faceapi。
'use strict';
const request = require('request');
const fs = require("fs");
// Replace <Subscription Key> with your valid subscription key.
const subscriptionKey = "eb8d5ea******8877c0" ;
const uriBase = 'https://pan***api.cognitiveservices.azure.com/face/v1.0/detect';
const imageBuffer = fs.readFileSync('jason.jpg');
// Request parameters.
const params = {
'returnFaceId': 'true','returnFaceLandmarks': 'false','returnFaceAttributes': 'age,gender,headPose,smile,facialHair,glasses,' +
'emotion,hair,makeup,occlusion,accessories,blur,exposure,noise'
};
const options = {
uri: uriBase,qs: params,body: imageBuffer,headers: {
'Content-Type': 'application/octet-stream','Ocp-Apim-Subscription-Key' : subscriptionKey
}
};
request.post(options,(error,response,body) => {
if (error) {
console.log('Error: ',error);
return;
}
let jsonResponse = JSON.stringify(JSON.parse(body),null,' ');
console.log('JSON Response\n');
console.log(jsonResponse);
});
我尝试了您提到的测试方法,并得到了以下结果。
{
"error": {
"code": "InvalidImage","message": "Decoding error,image format unsupported."
}
}
下面是我的测试代码。
'use strict';
//const request = require('request');
const fs = require("fs");
const axios = require("axios");
const request = require('request').defaults({ encoding: null });
// Replace <Subscription Key> with your valid subscription key.
const subscriptionKey = "eb8d5ea0********8877c0" ;
const uriBase = "https://pans***api.cognitiveservices.azure.com"+ '/face/v1.0/detect'
const imgUrl="https://pan***torage.blob.core.windows.net/ja**b/ja**.jpg";
var imageBuffer;
request.get(imgUrl,function (error,body) {
if (!error && response.statusCode == 200) {
var data;
data = "data:" + response.headers["content-type"] + ";base64," + Buffer.from(body).toString('base64');
imageBuffer=data;
aa();
}
});
function aa(){
// Request parameters.
const params = {
'returnFaceId': 'true',' ');
console.log('JSON Response\n');
console.log(jsonResponse);
});
}
建议。
如果您真的想以这种方式实现功能,请it is recommended to raise a support on the portal。请查阅官方答案,faceapi当前支持哪种图像格式。
您还可以向官方产品组提交建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。