将文件图像保存到localstorage HTML [英] Save a File Image to localstorage HTML
问题描述
我正在尝试将图像保存到localstorage并在需要时获取相同的内容,我对如何保存图像感到困惑,因为我提到了与我的相同问题相关的问题,但它们很复杂,最后我得到了一些东西看起来很完美,但我很困惑如何使用代码将图像保存在本地存储上
b $ b 听到JSFIDDEL中的代码
I am trying to save a image to localstorage and fetch the same back when is required,am confused on how to save a image as i have referred question related to my same question but they are complicated, Finally i got some thing which looks perfect to me but i am confused how to use the code to save the image on local storage
Hear is the code in JSFIDDEL
Html:
<input type="file" id="bannerImg" />
<img src="" id="tableBanner" />
JS:
bannerImage = document.getElementById('bannerImg');
imgData = getBase64Image(bannerImage);
localStorage.setItem("imgData", imgData);
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,/, "");
}
function fetchimage ()
{
var dataImage = localStorage.getItem('imgData');
var bannerImg = document.getElementById('tableBanner');
bannerImg.src = "data:image/png;base64," + dataImage;
}
推荐答案
你缺少 FileReader
将输入文件读取到dataURL。 Jsfiddle
You just lack a FileReader
to read the input file to dataURL. Jsfiddle
Html:
<input type="file" id="bannerImg" />
<img src="" id="tableBanner" />
<!-- for result output -->
<div id="res"></div>
javascript:
javascript:
// Get all variables
var bannerImage = document.getElementById('bannerImg');
var result = document.getElementById('res');
var img = document.getElementById('tableBanner');
// Add a change listener to the file input to inspect the uploaded file.
bannerImage.addEventListener('change', function() {
var file = this.files[0];
// Basic type checking.
if (file.type.indexOf('image') < 0) {
res.innerHTML = 'invalid type';
return;
}
// Create a file reader
var fReader = new FileReader();
// Add complete behavior
fReader.onload = function() {
// Show the uploaded image to banner.
img.src = fReader.result;
// Save it when data complete.
// Use your function will ensure the format is png.
localStorage.setItem("imgData", getBase64Image(img));
// You can just use as its already a string.
// localStorage.setItem("imgData", fReader.result);
};
// Read the file to DataURL format.
fReader.readAsDataURL(file);
});
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,/, "");
}
function fetchimage () {
var dataImage = localStorage.getItem('imgData');
img.src = "data:image/png;base64," + dataImage;
// If you don't process the url with getBase64Image, you can just use
// img.src = dataImage;
}
// Call fetch to get image from localStorage.
// So each time you reload the page, the image in localstorage will be
// put on tableBanner
fetchimage();
不是jsfiddle执行此脚本 onload
,所以你可以将它们包装在你自己网站的window.onload中。
Not that the jsfiddle execute this script onload
, so you may wrap them in window.onload in your own site.
这篇关于将文件图像保存到localstorage HTML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!