使用Ionic发布到Microsoft Cognitive Face API - AngularJS

时间:2017-04-05 10:12:39

标签: angularjs microsoft-cognitive face-api

目前,我正在使用Ionic开发面部识别应用。 我正在使用Microsoft的Face API

我的问题是我不断获得Error 400: Decoding error, image format unsupported.

在做了一些研究之后,我遇到了这个link

引用START,

  

当您提交二进制有效负载时,您应对其进行base64编码。这是你可能会做的事情..

URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader("Ocp-Apim-Subscription-Key", "...");

File file = new File("..."); 
FileEntity reqEntity = new FileEntity(file, ContentType.APPLICATION_OCTET_STREAM);
request.setEntity(reqEntity);

引用结束

使用Ionic / AngularJS,使用Device Camera捕获的图像或从图像库中选择的图像以base64字符串的形式返回。所以我找到了使用这个gist将数据解码为二进制的方法,但仍然失败了。

这是我进行API调用的控制器代码。

$scope.postToAPI = function () {
             // make http call to MS cognitive API
                var formData = new FormData();
                formData.append('file', $scope.picture);
                $http.post($scope.cognitiveServices.endpoint, formData, {
                    headers: { 'Content-Type': 'application/octet-stream', 'Ocp-Apim-Subscription-Key':$scope.cognitiveServices.apiKey }
                }).success(function (data) {
                    console.log(JSON.stringify(data));
                    alert("Awesome");
                }).error(function (err) {
                    alert("Fail ->" + err.code + " " + err.message);
                    console.log("Some error occured");
                });
            }

我有

  • 尝试设置transform:angular.identity和Content-Type:undefined
  • 尝试发送没有表格数据的图像(只是随机试用)
  • 尝试将base64字符串转换为Uint8数组(通过遵循此SO question的解决方案)

到目前为止我所有的尝试都失败了。有人可以解释我做错了吗?

P.S :这是我第一次使用Ionic框架。

0 个答案:

没有答案