私が取り組んでいるキャンバス ペイント アプリは、マウス クリックを使用して描画します。十分に単純です。getImageData に対して現在の描画を保存し、ユーザーが実際に描画したセッション cookie を設定するリスナーが mouseup にあります。スニペット:
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に置きますが、この場合はあまり機能しないので、完全な. ありがとう。