2

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

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

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

引用开始,

提交二进制有效负载时,不应对其进行 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);

引用 END

使用 Ionic/AngularJS,使用 Device Camera 捕获的图像或从 Image Gallery 中选择的图像以 base64 字符串的形式返回。因此,我寻找使用此要点将数据解码为二进制的方法,但仍然失败。

这是我进行 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的解决方案)

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

PS:这是我第一次使用 Ionic 框架。

4

0 回答 0