I have tried the detailed solution given on How to save an image to localStorage and display it on the next page?. The issue is that the base64 converted value is same for all the images I upload and when consumed on the next page shows a blank white image
.
HTML -
<input type="file" src=" " id="uploadUserImage" crossOrigin='Anonymous' (change)="readURL(this)"/>
<img src="" id="userImage" width="300" height="227">
Typescript -
readURL(input) {
this.elementRef.nativeElement.querySelector("#userImage").style.display = "block";
var that = this;
var imgObj = that.elementRef.nativeElement.querySelector('#uploadUserImage');
if (imgObj.files && imgObj.files[0]) {
var reader = new FileReader();
reader.onload = function (e:any) {
var targetObj = e.target;
that.elementRef.nativeElement.querySelector('#userImage').src = targetObj.result;
}.bind(this);
reader.readAsDataURL(imgObj.files[0]);
}
var userProfileImage = this.elementRef.nativeElement.querySelector('#userImage');
var imgData = this.getBase64Image(userProfileImage);
localStorage.setItem("imgData", imgData);
}
getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = 300;
canvas.height = 227;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
I basically want to show this tiger image on the next page, once the user uploads on one page.
Next Page -
HTML -
<img src="" id="userProfileImage"/>
Typescript -
var dataImage = localStorage.getItem('imgData');
var userImage = this.elementRef.nativeElement.querySelector('#userProfileImage');
userImage.src = "data:image/png;base64," + dataImage;
Any help or guidance will be of great help or if any other way exists to achieve this than do let me know, Thanks in advance!!