I\'m trying to encode an image to base64 and send it to a server. When I retrieve the image all it shows is blank.
The code I\'m using to encode it is this:
The image is loading asynchronously, meaning that your return dataURL... happens before the image is loaded into the canvas.
Instead of having this function return a value, have it call a callback function.
encodeImageUri = function(imageUri, callback) {
var c = document.createElement('canvas');
var ctx = c.getContext("2d");
var img = new Image();
img.onload = function() {
c.width = this.width;
c.height = this.height;
ctx.drawImage(img, 0, 0);
if(typeof callback === 'function'){
var dataURL = c.toDataURL("image/jpeg");
callback(dataURL.slice(22, dataURL.length));
}
};
img.src = imageUri;
}
You now call it like this:
encodeImageUri('/path/to/image.png', function(base64){
// Do something with the b64'd image
});
NOTE: For this to work, the image needs to be on the same domain as your page.