0

how to convert an image into base 64 in angular5 ? the image is an url gotten from facebook or google authentification api.

what have i done wrong ?

   getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.src.width;
canvas.height = img.src.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

// Usage

    var url=" https://www.livemint.com/rf/Image-621x414/LiveMint/Period2/2017/06/12/Photos/Opinion/telecom-km8--621x414@LiveMint.JPG";


var base64 = this.getBase64Image(url);

//error

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'width' of undefined TypeError: Cannot read property 'width' of undefined
Firas Chebbah
  • 415
  • 2
  • 12
  • 24

1 Answers1

0

If you have the Image as File, you can easily convert it to base64 by using a FileReader:

convert(file: File): string {
    const reader: FileReader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = (): void => {
        const base64String: string = (reader.result as string).match(
            /.+;base64,(.+)/
        )[1];
        return base64String;
    };
}
Marv
  • 748
  • 11
  • 27