I'm having trouble converting the image to the base64 format that was selected using ngCordova imagePicker .
To keep things simple, the code presented on the Cordoba website (which works) is as follows:
module.controller('ThisCtrl', function($scope, $cordovaImagePicker) {
var options = {
maximumImagesCount: 10,
width: 800,
height: 800,
quality: 80
};
$cordovaImagePicker.getPictures(options)
.then(function (results) {
for (var i = 0; i < results.length; i++) {
console.log('Image URI: ' + results[i]);
}
}, function(error) {
});
});
An array of results returns an array of results, for example: file /// ... but how to convert from here? I need a function that you pass to a value (file) and returns a base64 string.
Here is the function that is trying to do this:
function convertImgToBase64URL(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
var dataURL;
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
canvas = null;
};
img.src = url;
};
But how to integrate it into the code?
I tried this (you only need to select one image):
$cordovaImagePicker.getPictures(options)
.then(function (results) {
convertImgToBase64URL(results[0], function(base64Img){
self.chosenImage = base64Img;
});
}, function(error) {
console.log(error);
});
but self.chosenImage gets the value blank.
There may be a problem with asynchrony, but how best to solve it?