【发布时间】:2016-02-14 09:14:12
【问题描述】:
尝试从本地存储加载和检索图像。我猜内容安全不是问题。
代码在某处破坏了图像未正确存储在本地存储中或图像未正确从本地存储中加载。
以下是检查图像是否可从本地存储中获得的代码。如果会话可用,则从本地存储中获取。否则从 URL 中获取并显示图像并存储在本地存储中。
下面的代码将在pagebeforecreate执行
var dataImage = localStorage.getItem('ses_image');
var img = $('<img crossorigin="anonymous" width="100%" height="100%" id="img_menu-item" style="height: 100%;width:100%">');
jQuery('#pg_home_content').append(img);
if(dataImage){
bannerImg = document.getElementById('img_menu-item');
bannerImg.src = dataImage;
jQuery('#pg_home_content').append(bannerImg);
}else{
img.attr('src', 'http://example.com/myimage.png');
bannerImage = document.getElementById('img_menu-item');
bannerImage.setAttribute('crossOrigin', 'anonymous');
imgData = getBase64Image(bannerImage);
localStorage.setItem('ses_image', imgData);
}
getBase64Image
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;
}
当我执行console.log(dataURL) 时,它会生成以下输出,我猜是有问题...
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAABZUlEQVR4Xu3TQREAAAiEQK9/aWvsAxMw4O06ysAommCuINgTFKQgmAEMp4UUBDOA4bSQgmAGMJwWUhDMAIbTQgqCGcBwWkhBMAMYTgspCGYAw2khBcEMYDgtpCCYAQynhRQEM4DhtJCCYAYwnBZSEMwAhtNCCoIZwHBaSEEwAxhOCykIZgDDaSEFwQxgOC2kIJgBDKeFFAQzgOG0kIJgBjCcFlIQzACG00IKghnAcFpIQTADGE4LKQhmAMNpIQXBDGA4LaQgmAEMp4UUBDOA4bSQgmAGMJwWUhDMAIbTQgqCGcBwWkhBMAMYTgspCGYAw2khBcEMYDgtpCCYAQynhRQEM4DhtJCCYAYwnBZSEMwAhtNCCoIZwHBaSEEwAxhOCykIZgDDaSEFwQxgOC2kIJgBDKeFFAQzgOG0kIJgBjCcFlIQzACG00IKghnAcFpIQTADGE4LKQhmAMNpIQXBDGA4LQQL8oTPAGUY76lBAAAAAElFTkSuQmCC
第一次加载图像,从第二次开始,我得到一个空白图像......不确定我错过了什么???
【问题讨论】:
-
console是否记录了任何错误? -
@guest271314 不,控制台没有错误。
-
在致电
.toDataURL()时尝试不包括"image/png"? -
@guest271314 现在尝试.. 结果相同...实际上我正在尝试加载 2 张图像(在我要求的问题中)。我注意到两个图像的
dataURL的输出是相同的......理想情况下它不应该是一样的吗??? -
可以创建一个plnkrplnkr.co来演示吗?
标签: javascript jquery html local-storage