gpt4 book ai didi

javascript - 客户端如何存储动态图像

转载 作者:行者123 更新时间:2023-12-01 08:00:06 24 4
gpt4 key购买 nike

首先我很抱歉如果我问的是之前问过的问题,但事实上我什么也没得到。
我有一些<Div>在我的 asp.net 页面上。我使用 Javascript 从 Url 分配背景图像。下面是代码

 divFloor.style.backgroundImage = "url(Images/FloorPlan/" + hdnFloorImgSplit[1] + ")";

hdnFloorImgSplit is 数组包含图像的 url。这是因为我使用的是Azure云服务。
当客户端刷新页面或回发页面时,每次都会下载图像。我想要的是,我想将其存储在客户端浏览器上,并从那里使用它(如果存在)。这将节省服务器和客户端的带宽,并且速度将显着提高。

抱歉,我找不到路。我有很多图像想要存储并重试。因此我的网站变得很慢。任何帮助表示赞赏

最佳答案

Blade,他们有很多不同的方法来做到这一点。我向您展示一个。使用 localstorage Json db。您可以使用另一种方法,例如带有 XMLHttpRequest Level 2 的 Blob。有关它的更多信息,您可以查看此链接-> Saving images and filesin localStorage - javascript

存储图像(您需要首先使用 localStorage.SetItem 存储所有图片......)

这里的想法是能够获取已加载到当前网页的图像并将其存储到 localStorage 中。正如我们上面所确定的,localStorage 仅支持字符串,因此我们这里需要做的是将图像转换为数据 URL。对图像执行此操作的一种方法是加载到 Canvas 元素中。然后,使用 Canvas ,您可以将 Canvas 中的当前视觉表示形式读出为数据 URL。

让我们看一下这个示例,文档中有一张 id 为“elephant”的图像:

    // Get a reference to the image element
var elephant = document.getElementById("elephant");

// Take action when the image has loaded
elephant.addEventListener("load", function () {
var imgCanvas = document.createElement("canvas"),
imgContext = imgCanvas.getContext("2d");

// Make sure canvas is as big as the picture
imgCanvas.width = elephant.width;
imgCanvas.height = elephant.height;

// Draw image into canvas element
imgContext.drawImage(elephant, 0, 0, elephant.width, elephant.height);

// Get canvas contents as a data URL
var imgAsDataURL = imgCanvas.toDataURL("image/png");

// Save image into localStorage
try {
localStorage.setItem("elephant", imgAsDataURL);
}
catch (e) {
console.log("Storage failed: " + e);
}
}, false);

然后,如果我们想更进一步,我们可以利用 JavaScript 对象并使用 localStorage 进行日期检查。在此示例中,我们第一次通过 JavaScript 从服务器加载图像,但之后每次加载页面时,我们都会从 localStorage 读取保存的图像:

HTML

<figure>
<img id="elephant" src="about:blank" alt="A close up of an elephant">
<noscript>
<img src="elephant.png" alt="A close up of an elephant">
</noscript>
<figcaption>A mighty big elephant, and mighty close too!</figcaption>
</figure>

JavaScript

// localStorage with image
var storageFiles = JSON.parse(localStorage.getItem("storageFiles")) || {},
elephant = document.getElementById("elephant"),
storageFilesDate = storageFiles.date,
date = new Date(),
todaysDate = (date.getMonth() + 1).toString() + date.getDate().toString();

// Compare date and create localStorage if it's not existing/too old
if (typeof storageFilesDate === "undefined" || storageFilesDate < todaysDate) {
// Take action when the image has loaded
elephant.addEventListener("load", function () {
var imgCanvas = document.createElement("canvas"),
imgContext = imgCanvas.getContext("2d");

// Make sure canvas is as big as the picture
imgCanvas.width = elephant.width;
imgCanvas.height = elephant.height;

// Draw image into canvas element
imgContext.drawImage(elephant, 0, 0, elephant.width, elephant.height);

// Save image as a data URL
storageFiles.elephant = imgCanvas.toDataURL("image/png");

// Set date for localStorage
storageFiles.date = todaysDate;

// Save as JSON in localStorage
try {
localStorage.setItem("storageFiles", JSON.stringify(storageFiles));
}
catch (e) {
console.log("Storage failed: " + e);
}
}, false);

// Set initial image src
elephant.setAttribute("src", "elephant.png");
}
else {
// Use image from localStorage
elephant.setAttribute("src", storageFiles.elephant);
}

关于javascript - 客户端如何存储动态图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561056/

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