gpt4 book ai didi

javascript - 如何将图片保存到localStorage并在下一页显示?

转载 作者:IT王子 更新时间:2023-10-29 02:38:20 25 4
gpt4 key购买 nike

所以,基本上,我需要上传一张图片,将其保存到 localStorage,然后在下一页显示。

目前,我有我的 HTML 文件上传:

<input type='file' id="uploadBannerImage" onchange="readURL(this);" />

利用这个函数在页面上显示图片

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]);
}
}

图像立即显示在页面上供用户查看。然后要求他们填写表格的其余部分。这部分工作完美。

一旦表格完成,他们就会按下“保存”按钮。按下此按钮后,我将所有表单输入保存为 localStorage 字符串。我需要一种方法将图像另存为 localStorage 项。

保存按钮还将引导他们到一个新页面。这个新页面将在表格中显示用户数据,图像位于顶部。

如此简单明了,我需要在按下“保存”按钮后将图像保存在 localStorage 中,然后从 localStorage 中借出图像到下一页.

我找到了一些解决方案,例如 this fiddlethis article at moz://a HACKS .

虽然我仍然对它的工作原理感到非常困惑,但我真的只需要一个简单的解决方案。基本上,我只需要在按下“保存”按钮后通过 getElementByID 找到图像,然后处理并保存图像。

最佳答案

对于同样需要解决这个问题的人:

首先,我使用 getElementByID 获取图像,并将图像保存为 Base64。然后我将 Base64 字符串保存为我的 localStorage 值。

bannerImage = document.getElementById('bannerImg');
imgData = getBase64Image(bannerImage);
localStorage.setItem("imgData", imgData);

这是将图像转换为 Base64 字符串的函数:

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,/, "");
}

然后,在我的下一页上,我创建了一个带有空白 src 的图像,如下所示:

<img src="" id="tableBanner" />

当页面加载时,我使用接下来的三行从 localStorage 获取 Base64 字符串,并将其应用到我创建的空白 src 图像:

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

在许多不同的浏览器和版本中对其进行了测试,它似乎运行良好。

关于javascript - 如何将图片保存到localStorage并在下一页显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com