2016-01-14 2 views
0

Problème: Je tente de stocker une image au format base 64, mais la méthode window.plugins.Base64.encodeFile n'est pas en cours d'exécution.Fonction ne s'exécutant pas dans window.plugins dans Angular/Ionic

J'ai installé le plugin Cordova localement et le $ cordovaImagePicker fonctionne correctement. Après avoir extrait l'image du téléphone, elle ne stocke que le chemin de l'image locale dans $ scope.collected.selectedImage, plutôt que de le convertir au format base 64.

Merci pour l'aide !!!

'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'); 
    }; 

    }); 

Répondre

0

Dans tous les tutoriel sur ce plug-in, ils utilisent le résultat (base64) en ng-src comme ceci:

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

Ce qui signifie que ce plugin retourne un chemin, cela est normal comportement pour ce plugin.

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

Il retourne le chemin d'un im64 base64 converti. Vos résultats [0] path et base64 path doivent être différents.

Source: http://www.gajotres.net/accessing-image-galery-using-ionic-and-ngcordova/2/

Source: https://forum.ionicframework.com/t/how-to-load-image-from-android-local-storage/25132/3