Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Google Cloud Vision在'处获取无效值;请求[0]。image.content';_Angularjs_Google Cloud Vision - Fatal编程技术网

Angularjs Google Cloud Vision在'处获取无效值;请求[0]。image.content';

Angularjs Google Cloud Vision在'处获取无效值;请求[0]。image.content';,angularjs,google-cloud-vision,Angularjs,Google Cloud Vision,我得到这个错误: Invalid value at 'requests[0].image.content' (TYPE_BYTES), "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/... 图像编码正确(它使用另一个需要相同base64编码的视觉搜索服务m

我得到这个错误:

Invalid value at 'requests[0].image.content' (TYPE_BYTES), "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/...
图像编码正确(它使用另一个需要相同base64编码的视觉搜索服务metamind工作),这个调用有什么问题

这来自AngularJS
$http
服务:

            $http({
                method: "POST",
                data: '{"requests":[{"image":{"content":"' + base64Img + '"},"features":[{"type":"LABEL_DETECTION","maxResults":1}]}]}',
                url: "https://vision.googleapis.com/v1/images:annotate?key=mykey27272772277227292992929"
            }).success(function (result) {
                console.log("SUCCESS");
                $scope.results = result;
                console.log(result);
            }).error(function (err) {
                console.log("FAIL");
                console.log(err);
            });

有什么想法吗?

我刚刚意识到他们不想要“data:image/jpeg;base64”部分,所以base64Img.slice(23)完成了这项工作

更新:由于slice在字符级别被截断
。slice(23)
非常适用于.png和.jpg(以及其他具有3个字符扩展名的类型),但如果用户上载类型“jpeg”,则额外的字符会破坏您的数据:

var headerless = "data:image/jpeg;base64" 
headerless.slice(23)
这将输出:
“data:image/jpeg;base6”
,其余4个将损坏您的数据

我建议使用
。用regex语句替换
,以涵盖此用例:

var image = <my image in b64 including header goes here>
var noHeader = image.replace(/^data:image\/(png|jpg|jpeg);base64,/, "")
var图像=
var noHeader=image.replace(/^data:image\/(png | jpg | jpeg);base64,/,“”)

您可以直接在GCV中使用jpg格式。以下几点对我很有用:

var source = 'http://www.abhishek.info/wp-content/uploads/2015/07/6-ID-Card-for-Downtown-Motors-Pvt-Limited.jpg';
  var apikey = 'yourkeyXXXXXXXXXXxxxxxx';
  $scope.param = '{"requests": [ { "image": { "source": { "imageUri": "' + source + '" } }, "features": [ { "type": "TEXT_DETECTION" } ] } ] }';
  $scope.url = 'https://vision.googleapis.com/v1/images:annotate?key=' + apikey;
  var url = $scope.url;
  var data = $scope.param;
  var config = {
    headers: {
      'Content-Type': 'application/json; charset=utf-8'
    }
  };
  $http.post(url, data,config).then(
    function(response) {
      console.log(response);
    },
    function(response) {
      console.log(response);
    });

  })

我刚刚意识到他们不想要“data:image/jpeg;base64”部分,所以base64Img.slice(23)完成了这项工作。你应该把它作为答案发布!