Angular JS Camera插件base64字符串

时间:2017-06-29 07:45:00

标签: javascript angularjs cordova

我正在尝试在ionic angular.js中使用带有cordova app的相机插件。我的问题是,当我得到图片时它给了我一个图像的url而不是base64字符串 我需要base64字符串。 在Services.js中

.factory('Camera', function($q) {

   return {
      getPicture: function(options) {
         var q = $q.defer();

         navigator.camera.getPicture(function(result) {
            q.resolve(result);
         }, function(err) {
            q.reject(err);
         }, options);

         return q.promise;
      }
   }

});

我上面的用户代码返回

  

文件:///storage/emulated/0/Android/data/com.example.app/cache/1313513121.jpg

但我想要base64字符串,因为我将它发送到服务器以将图像保存在服务器中 在Controller.js中

$scope.AddImage = function () {
         var options = {
         quality : 75,
         targetWidth: 200,
         targetHeight: 200,
         sourceType: 1
         };

          Camera.getPicture(options).then(function(imageData) {
              alert(imageData);
              var item={
                  image: imageData
              }
             Pictures.push(item);
             $scope.Photos = Pictures;
          }, function(err) {
             console.log(err);
          });
    }
我在上面写了代码。我该如何解决这个问题

提前致谢

1 个答案:

答案 0 :(得分:1)

destinationType上使用值 DATA_URL [ cameraOptions ] 选项参数。

  

navigator.camera.getPicture(cameraSuccess,cameraError,[   cameraOptions]);

选项destinationType: Camera.DestinationType.DATA_URL将允许您拍摄照片并检索Base64编码的图像。默认设置为destinationType: Camera.DestinationType.FILE_URI,它将检索图像文件位置。

您可以使用一般代码示例来调整现有代码。

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
 }); 

function onSuccess(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}

function onFail(message) {
    alert('Failed because: ' + message);
}

文档here