GarXik
GarXik

Reputation: 37

Can I store image as blob to localstorage or somewhere so it can used in another page?

I am using Cordova's camera plugin to get a Picture (getPicture() method). It returns the picture taken in blob url format. I am saving the blob url of the image in a key of an object that I am saving in the LocalStorage. However, the problem is that when I retrieve the blob url from local storage and set the image's src on another page, the image is not displayed. It is displayed as shown in the image below.

I read somewhere that this is because blob urls are only valid for the page they were generated on. Is there a way I can make the generated image usable on another page?

enter image description here

Upvotes: 1

Views: 3053

Answers (1)

Dipak Telangre
Dipak Telangre

Reputation: 1993

What I do is, convert image in Base64 string and then store that Base64 string to localstorage.

For Ex

Get image by id and store image to localstorage

image = document.getElementById('myImage');
imgData = getBase64Image(image);
localStorage.setItem("imgData", imgData);

Base64 Conversion

function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.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,/, "");
}

Then on any next page or same page you can retrieve Base64 image from localstorage and display to page

var dataImage = localStorage.getItem('imgData');
imageTag = document.getElementById('myImage');
imageTag.src = "data:image/png;base64," + dataImage;

Upvotes: 2

Related Questions