Я использую azure face api с помощью node js, ниже приведен код. Однако вместо изображения, размещенного где-то, я хочу использовать свое локальное изображение и опубликовать его. я пробовал разные варианты, но он не распознает формат изображения или неверный URL-адрес изображения
ниже приведены вещи, которые я пробовал
1) var stream = fs.createReadStream('local image url');
2) var imageAsBase64 = fs.readFileSync('image.jpg','base64');
ниже код
'use strict';
const request = require('request');
// Replace <Subscription Key> with your valid subscription key.
const subscriptionKey = '<Subscription Key>';
// You must use the same location in your REST call as you used to get your
// subscription keys. For example, if you got your subscription keys from
// westus, replace "westcentralus" in the URL below with "westus".
const uriBase = 'https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect';
const imageUrl =
'https://upload.wikimedia.org/wikipedia/commons/3/37/Dagestani_man_and_woman.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: '{"url": ' + '"' + imageUrl + '"}',
//body: stream,
body:imageAsBase64,
headers: {
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key' : subscriptionKey
}
};
request.post(options, (error, response, body) => {
if (error) {
console.info('Error: ', error);
return;
}
let jsonResponse = JSON.stringify(JSON.parse(body), null, ' ');
console.info('JSON Response\n');
console.info(jsonResponse);
});





Я поиграл с этим и получил следующий код, вы на самом деле были очень близки к тому, чтобы заставить его работать. Главное — передать объект Buffer в поле body POST-запроса и указать правильный заголовок content-type.
'use strict';
const request = require('request');
const fs = require("fs");
// Replace <Subscription Key> with your valid subscription key.
const subscriptionKey = <Subscription Key> ;
const uriBase = 'https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect';
const imageBuffer = fs.readFileSync('image.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.info('Error: ', error);
return;
}
let jsonResponse = JSON.stringify(JSON.parse(body), null, ' ');
console.info('JSON Response\n');
console.info(jsonResponse);
});
Работал как зачарованный!
Есть ли какая-то польза от использования request вместо axios для чего-то подобного? По сути, я пытаюсь сделать то же самое, но с аксиомами, и мне не очень повезло.
Axios, вероятно, лучше во всяком случае, поскольку запрос теперь устарел. Однако может потребоваться немного поиграть с параметрами, чтобы заставить его работать.
Спасибо вечером попробую!