javascript - 将 base64 存储在本地存储中

标签 javascript

我在 javascript 中有一个函数:

function store_data(){
var img=document.createElement("img"); 
/*var img=new Image();
img.onload = function() {
    context.drawImage(img, 0, 0);
};*/
img.src= URL; //js global var
var height=parseInt(img.naturalHeight,10);
var width=parseInt(img.naturalWidth,10);
var canvas = document.getElementById('myCanvas'); 
canvas.setAttribute("width", width);
canvas.setAttribute("height", height);

var context = canvas.getContext('2d');
context.drawImage(img,0,0);
canvas.style.width="100%"; 
var data=(canvas.toDataURL("image/png"));
localStorage.setItem("data", data);

}

第一次调用时存储一个字符串,如“数据”;在 localStorage 中,图像不完整,就像“data64;aotehtahotetav ...”。但是当我第二次打电话时,数据存储得很好。为什么会这样?

也许我应该在加载的 dom 的 img 中加载图像?存储图像以供后期绘制使用。

最佳答案

正如 Michael 已经提到的,您的代码在图像完全下载之前将图像数据保存到 localStorage。第二次图像已存在于缓存中。

也许像这样在 onload 事件触发时尝试将图像加载到 Canvas 上

function store_data() {

    var img = new Image();
    img.src =  URL; //js global var

    img.onload = function( ) {

        var canvas  =  document.getElementById( 'myCanvas' ); 
        canvas.setAttribute( "width", img.width );
        canvas.setAttribute( "height", img.height );

        var context  =  canvas.getContext( '2d' );
        context.drawImage( img, 0, 0 );
        canvas.style.width = "100%"; 
        var data = canvas.toDataURL("image/png");
        localStorage.setItem( "data", data );
    }

}

关于javascript - 将 base64 存储在本地存储中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571858/

相关文章:

javascript - 在我的沙箱中渲染数据的 redux 方式不成功

javascript - 使用按钮和ajax删除mysql

javascript - 使用对象组合的多态性 - JavaScript

javascript - HTML javascript 选择操作

javascript - 使用 $.when().then() 函数时遇到问题

javascript - 为什么第 nth-child 将样式添加到备用可见元素不起作用?

用于匹配 css 图像 url 但不匹配数据 url 的 Javascript 正则表达式

javascript - 如何显示具有不同条形颜色的 chart.js 图例

javascript - Node.js 中出现 Promise 错误

javascript - Xbox 360 HTML5/Javascript 应用程序开发