2016-01-14 13 views
0

Проблема: Я пытаюсь сохранить изображение в формате базы 64, но метод window.plugins.Base64.encodeFile не работает.Функция не работает в окне.plugins in Angular/Ionic

Я установил плагин Cordova локально, и $ cordovaImagePicker работает правильно. После извлечения изображения с телефона он сохраняет только локальный путь изображения в $ scope.collected.selectedImage, а не преобразовывает его в формат базы 64.

Спасибо за помощь !!!

'use strict'; 

angular.module('copula') 
    .controller('ItemsCtrl', function($scope, $state, Auth, Item, $firebaseObject, $cordovaImagePicker, $ionicPlatform) { 

    var ref = new Firebase('https://copula.firebaseio.com/users'); 
    var authData = Auth.$getAuth(); 
    var itemsObject = $firebaseObject(ref.child(authData.uid + '/items')); 

    itemsObject.$loaded().then(function() { 
     $scope.items = itemsObject; 
    }); 

    $scope.collection = { 
     selectedImage: '' 
    }; 
    $scope.item = {}; 

    $ionicPlatform.ready(function() { 

     $scope.getImageSaveContact = function() { 
      // Image picker will load images according to these settings 
      var options = { 
       maximumImagesCount: 1, // Max number of selected images, I'm using only one for this example 
       width: 800, 
       height: 800, 
       quality: 80   // Higher is better 
      }; 

      $cordovaImagePicker.getPictures(options).then(function (results) { 

       $scope.collection.selectedImage = results[0]; // We loading only one image so we can use it like this 

       window.plugins.Base64.encodeFile($scope.collection.selectedImage, function(base64){ // Encode URI to Base64 needed for contacts plugin 
        console.log("before encoding"); 
        $scope.collection.selectedImage = base64; 
        console.log(base64); 
       }); 
       console.log($scope.collection.selectedImage); 

      }, function(error) { 
       console.log('Error: ' + JSON.stringify(error)); // In case of error 
      }); 
     }; 

    }); 

    $scope.$on('$ionicView.beforeEnter', function (event, viewData) { 
     viewData.enableBack = true; 
    }); 

    $scope.submitItem = function() { 
     ref.child(authData.uid).child('items').push(Item.pushAttrs($scope.item)); 
     $scope.item = {}; 
     $state.go('main.home'); 
    }; 

    }); 

ответ

0

Во всем учебнике об этом плагине они используют результат (base64) в нг-Src, как это:

<img ng-src="{{collection.selectedImage}}"> 

Что означает этот плагин возвращает путь, это нормально поведение для этого плагина.

console.log('file base64 encoding: ' + base64); 

Он возвращает путь преобразованного base64 img.

Ваши результаты [0] путь и путь base64 должны быть разными.

Источник: http://www.gajotres.net/accessing-image-galery-using-ionic-and-ngcordova/2/

Источник: https://forum.ionicframework.com/t/how-to-load-image-from-android-local-storage/25132/3