代码之家  ›  专栏  ›  技术社区  ›  user852566

牛津情感API项目base64图片

  •  2
  • user852566  · 技术社区  · 9 年前

    我正试图在PhoneGap应用程序中通过JavaScript调用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位图像,我得到的只是“Bad Body”,我将其作为内容类型“application/octet stream”和“application/json”进行了尝试,并得到了相同的错误。编码的示例看起来像..和http请求

    职位 https://api.projectoxford.ai/emotion/v1.0/recognize HTTP://1.1 内容类型:应用程序/八位字节流 主持人:api.projectoxford.ai Ocp Apim订阅密钥: 内容长度:129420

    数据:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/。。。

    我回来了:

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

    { “错误”:{ “code”:“BadBody”, “message”:“面部图像无效。” } }

    我现在不确定是否可以从Javascript发送这样的图像。有人能告诉我我的javascript是否正确,或者他们是否可以向网站发送一个编码的base64字符串图像吗。

    谢谢你的帮助 提姆

    1 回复  |  直到 9 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

    此API不接受图像的数据URI。您需要做的是将其转换为二进制blob。尽管如此 answer 对于不同的Project Oxford API,您可以应用相同的技术。

    推荐文章