如何保存和加载HTML5画布到&来自localStorage
How to save and load HTML5 Canvas to & from localStorage?
我希望用户能够以自定义名称将画布图形保存到localStorage(使用"保存"按钮),然后能够从localStorage加载(使用"加载"按钮)以前的图形。
第一个选项
如果你只想保存一个位图,那么你可以这样保存:
localStorage.setItem(canvasName, canvas.toDataURL());
然后像这样加载:
var dataURL = localStorage.getItem(canvasName);
var img = new Image;
img.src = dataURL;
img.onload = function () {
ctx.drawImage(img, 0, 0);
};
我建议使用canvas.toDataURL()
而不是ctx.getImageData()
,因为即使画布为空,ctx.getImageData()
JSON字符串的大小也会非常大。
第二种选择
如果您想将画布存储为行数组,那么您应该将行坐标存储在某个变量中,并保存它的json:
localStorage.setItem(canvasName, JSON.stringify(linesArray));
然后您可以加载行数组并重新绘制画布:
var lines = JSON.parse(localStorage.getItem(canvasName));
lines.forEach(function (line) {
ctx.beginPath();
ctx.strokeStyle = line.color;
ctx.moveTo(line.x1, line.y1);
ctx.lineTo(line.x2, line.y2);
ctx.stroke();
});
第一步是从画布中获取图像数据。
var imageData = myCtxt.getImageData(0,0,WIDTH,HEIGHT);
现在将其存储到stringifying
之后的localStorage
it:
localStorage.setItem(savekey, JSON.stringify(idt));
要读取并设置回数据,您可以使用以下内容:
var idt = localStorage.getItem(savekey) || null;
if (idt !== null) {
var data = JSON.parse(idt);
ctx.putImageData(idt, 0, 0);
}
我已经把处理功能的函数放在fidd中。
关于localStorage
,你可以阅读这个和这个问题。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 如何将localStorage值设置为false
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 如果localstorage为空,则显示欢迎消息
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- AngularJS&JSON-从Previous&下一个对象
- 什么是&&在没有if的行中的变量之间
- 基于localStorage的Meteor激活模板
- 关于引入外部javascript文件的问题&css通过https
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 使用ajax的服务器端分页&jQuery
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如何保存和加载HTML5画布到&来自localStorage
- 未捕获的语法错误:localStorage的意外标识符&JSON