1

I am trying to get base64 data from image url but it always return "data:"

Here's the code :

function getBase64Image(imgurl) {
  var canvas = document.createElement("canvas");
  var img = new Image();
  img.src = imgurl;
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0);
  var dataURL = canvas.toDataURL("image/png");
  console.log(dataURL);
  return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
Legionar
  • 7,472
  • 2
  • 41
  • 70

1 Answers1

0

Use img.onload to execute the code after your image has loaded. Use a callback function to report back the dataURL.

function getBase64Image(imgurl, callback) {
  var canvas = document.createElement("canvas");
  var ctx = canvas.getContext("2d");
  var img = new Image();
  img.onload = function() {
      canvas.width = img.width;
      canvas.height = img.height;
      ctx.drawImage(img, 0, 0);
      var dataURL = canvas.toDataURL("image/png");
      dataURL = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
      if (typeof callback === 'function') {
        callback(dataUrl);
      }
  };
  img.src = imgurl;
}
Rayon
  • 36,219
  • 4
  • 49
  • 76
Ke Vin
  • 2,004
  • 1
  • 18
  • 28