问题描述
我尝试使用这样的配置将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当前支持哪种图像格式。
您还可以向官方产品组提交建议。