Emotion API项目牛津base64图像

时间:2016-04-01 16:28:56

标签: base64 emotion microsoft-cognitive

我正在尝试通过JavaScript在PhoneGap应用中调用Emotion Api。我将图像编码为base64并验证数据可以通过其中一个在线工具进行解码。这是我在网上找到的代码。

var apiKey =“e371fd4333ccad2”; //(您可以在网站上获得一个免费密钥,此处已修改)

// apiUrl:API的基本URL。通过API文档了解其他API的用途 var apiUrl =“https://api.projectoxford.ai/emotion/v1.0/recognize”;

“file”是base64字符串。

  function CallAPI(file, apiUrl, apiKey)
    {



      //  console.log("file=> " +file);

      $.ajax({
           url: apiUrl,
           beforeSend: function (xhrObj) {
           xhrObj.setRequestHeader("Content-Type", "application/octet-stream");
           xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", apiKey);
           },
           type: "POST",
           data: file,
           processData: false
           })
    .done(function (response) {
          console.log("in call api a");
          ProcessResult(response);
          })
    .fail(function (error) {
          console.log(error.getAllResponseHeaders())

          });
  }

   function ProcessResult(response)
   {
    console.log("in processrult");
    var data = JSON.stringify(response);
    console.log(data);

   }

我回来了:

Expires: -1

Access-Control-Allow-Origin: *

Pragma: no-cache

Cache-Control: no-cache

Content-Length: 60

Date: Fri, 01 Apr 2016 13:34:32 GMT

Content-Type: application/json; charset=utf-8

X-Powered-By: ASP.NET

所以我尝试了他们的控制台测试页面。 https://dev.projectoxford.ai/docs/services/5639d931ca73072154c1ce89/operations/563b31ea778daf121cc3a5fa/console

我可以输入像“example.com/man.jpg”这样的图像,效果很好。但如果我拍摄相同的图像,并将其编码为基本64图像,我得到的是“坏身体”我已经尝试了它作为内容类型“application / octet-stream”和“application / json”并得到相同的错误。编码的样本看起来像......和http请求

POST https://api.projectoxford.ai/emotion/v1.0/recognize HTTP / 1.1 Content-Type:application / octet-stream 主持人:api.projectoxford.ai Ocp-Apim-Subscription-Key:••••••••••••••••••••••••••••••• 内容长度:129420

数据:图像/ JPEG; BASE64,/ 9J / 4AAQSkZJRgABAQAASABIAAD /...

我回来了:

Pragma:no-cache 缓存控制:无缓存 日期:2016年4月1日星期五16:23:09 GMT X-Powered-By:ASP.NET 内容长度:60 Content-Type:application / json;字符集= utf-8的 过期:-1

{   “错误”:{     “代码”:“BadBody”,     “消息”:“脸部图片无效。”   } }

我现在不确定你是否可以从Javascript发送这样的图像。任何人都可以告诉我,我的javascript是否正确,或者他们是否可以将编码的base64字符串图像发送到网站。

感谢您的帮助 添

1 个答案:

答案 0 :(得分:1)

此API不接受图片的数据URI。您需要做的是将其转换为二进制blob。虽然此answer适用于不同的Project Oxford API,但您可以应用相同的技术。