Skip to content

Instantly share code, notes, and snippets.

@balvinder294
Created June 10, 2020 07:54
Show Gist options
  • Save balvinder294/abd4d976e3b1bbb45156aa704c91f0f8 to your computer and use it in GitHub Desktop.
Save balvinder294/abd4d976e3b1bbb45156aa704c91f0f8 to your computer and use it in GitHub Desktop.
Method to take a Image url and fetch -- Tekraze.com
/* Method called from the UI */
getImage(imageUrl: string) {
this.getBase64ImageFromURL(imageUrl).subscribe((base64Data: string) => {
this.base64TrimmedURL = base64Data;
this.createBlobImageFileAndShow();
});
}
/* Method to fetch image from Url */
getBase64ImageFromURL(url: string): Observable<string> {
return Observable.create((observer: Observer<string>) => {
// create an image object
let img = new Image();
img.crossOrigin = "Anonymous";
img.src = url;
if (!img.complete) {
// This will call another method that will create image from url
img.onload = () => {
observer.next(this.getBase64Image(img));
observer.complete();
};
img.onerror = err => {
observer.error(err);
};
} else {
observer.next(this.getBase64Image(img));
observer.complete();
}
});
}
/* Method to create base64Data Url from fetched image */
getBase64Image(img: HTMLImageElement): string {
// We create a HTML canvas object that will create a 2d image
var canvas: HTMLCanvasElement = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
let ctx: CanvasRenderingContext2D = canvas.getContext("2d");
// This will draw image
ctx.drawImage(img, 0, 0);
// Convert the drawn image to Data URL
let dataURL: string = canvas.toDataURL("image/png");
this.base64DefaultURL = dataURL;
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment