【问题标题】:Angular JS Camera plugin base64 stringAngular JS 相机插件 base64 字符串
【发布时间】:2017-06-29 15:57:35
【问题描述】:

我正在尝试在 ionic angular.js 中将相机插件与 cordova 应用程序一起使用。我的问题是,当我得到图片时,它给了我一个图片的 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;
      }
   }

});

我上面的用户代码返回

file:///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);
          });
    }

我在上面写了代码。我该如何解决这个问题

提前致谢

【问题讨论】:

    标签: javascript angularjs cordova


    【解决方案1】:

    [ cameraOptions ]上使用destinationType选项参数,其值为DATA_URL

    navigator.camera.getPicture( cameraSuccess, cameraError, [ 相机选项]);

    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

    【讨论】:

    • 我尝试在选项中添加controller.js,但没有成功
    • 它应该...很难检测到问题是否存在,但请尝试以上作为测试代码示例...尝试也更改为navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] ); 而不是.then 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2018-02-06
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多