我有一个我正在使用的画布绘画应用程序,它使用鼠标点击来绘制。很简单。mouseup 上有一个监听器,它保存当前绘图相对于 getImageData 并设置用户实际上绘制的会话 cookie。片段:
var canvasData;
function save () {
// get the data
canvasData = context.getImageData(0, 0, canvas.width, canvas.height);
};
...
this.mouseup = function (ev) {
if (tool.started) {
tool.mousemove(ev);
tool.started = false;
save();
document.cookie = 'redraw=true; path=/'
}
};
我正在寻找的功能是让用户能够离开页面,然后返回到它,非缓存,让网站看到他们的 cookie,阅读绘图并使用 putImageData 映射它。片段:
function restore () {
// restore the old canvas
context.putImageData(canvasData, 0, 0);
};
var checking = readCookie('redraw')
if (checking) {
restore();
};
但是当我尝试这样做时,我在 putImageData 行上收到错误控制台显示“图像损坏或截断”和“TypeError:值不是对象”。
当我尝试将画布保存到内存时(保存到数据,绘制图像):
var savedData = new Image();
function save () {
savedData.src = canvas.toDataURL("image/png");
};
function restore () {
context.drawImage(savedData,0,0);
};
我得到“NS_ERROR_NOT_AVAILABLE:组件不可用”和“访问属性'toString'的权限被拒绝”。有人知道我在做什么错吗?我会把它放在 jsfiddle 上,但在这种情况下,它不会那么有效,所以这里是完整的. 谢谢。