如何将图像保存到localStorage并将其显示在下一页上?
所以基本上,我需要做的标题状态; 上传一个图像,保存到localStorage,然后显示在下一页。
目前,我有我的HTMLfile upload:
<input type='file' id="uploadBannerImage" onchange="readURL(this);" />
其中使用此function在页面上显示图像
function readURL(input) { document.getElementById("bannerImg").style.display = "block"; if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { document.getElementById('bannerImg').src = e.target.result; } reader.readAsDataURL(input.files[0]); } }
图像即时显示在页面上供用户查看。 然后要求他们填写表格的其余部分。 这部分工作完美。
一旦表格完成,他们然后按下“保存”button。 一旦按下此button,我将所有表单input保存为localStorage
string。 我需要一种方法来将图像保存为localStorage
项目。
保存button也将引导他们到一个新的页面。 这个新的页面将把用户数据显示在表格中,图像位于最上面。
所以简单而简单,我需要在按下“保存”button后将图像保存在localStorage
,然后从localStorage
的下一页上借出图像。
我发现了一些解决scheme,如这个小提琴: http : //jsfiddle.net/8V9w6/
而这个: https : //hacks.mozilla.org/2012/02/saving-images-and-files-in-localstorage/
虽然我对这个工作仍然非常困惑,但我只是真的需要一个简单的解决scheme。 基本上,我只需要通过getElementByID
find图像,一旦按下“保存”button,然后处理并保存图像。
所有的帮助,非常感谢。 谢谢!
谁也需要解决这个问题:
首先,我用getElementByID
抓取图像,并将图像保存为Base64。 然后我将Base64string保存为localStorage值。
bannerImage = document.getElementById('bannerImg'); imgData = getBase64Image(bannerImage); localStorage.setItem("imgData", imgData);
这里是将图像转换为Base64的function:
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,/, ""); }
然后,在我的下一页,我创build了一个像这样的空白src的图像:
<img src="" id="tableBanner" />
直接加载页面时,我使用下面三行从localstorage获取base64string,并将其应用到具有我创build的空白src的图像:
var dataImage = localStorage.getItem('imgData'); bannerImg = document.getElementById('tableBanner'); bannerImg.src = "data:image/png;base64," + dataImage;
testing它在不同的浏览器和版本,它似乎工作得很好。
我写了一个在localStorage JQueryImageCaching中保存图像的小小的2.2kb库用法:
<img data-src="path/to/image"> <script> $('img').imageCaching(); </script>
您可以将图像序列化为数据URI。 这篇博客中有一篇教程。 这将产生一个string,你可以存储在本地存储。 然后在下一页,使用数据uri作为图像的来源。