2012-03-18 11 views
0

私は2つのhtmlファイルを持っています。例えば、1.htmlと2.htmlで、1.jsと2.jsでjavascriptを参照しています。 1.htmlでは、私はキャンバスオブジェクトをドラッグアンドドロップ機能を持っているので、キャンバスに追加の画像を追加する方法はdrawImageです。 1.htmlで画像を追加し終えたら、キャンバスをlocalstorageに保存します。私は好きですので、ここで、HTML5 - ファイル間にキャンバスを渡す

var canvas = document.getElementById("canvas"); 
var ctx = canvas.getContext('2d'); 

ctx.drawImage(imageObj, x, y, imageObj.width, imageObj.height); 
ctx.drawImage(imageObj2, x2, y2, imageObj2.width, imageObj2.height); 

localStorage.setItem("context1", ctx); // Unsure if i should save context or canvas 

今、2.htmlに、私は1.htmlキャンバスに保存され、設定/ 1.htmlにそれを適用取得したい::まもなく、それは次のようになります

var savedContext = localStorage.getItem("context1"); 

var canvas1 = document.getElementById('canvas1'); 
var context1 = savedContext; 

私は結果が得られていないので、キャンバスに描画されたすべての画像をそのように渡すことが可能かどうか分かりません。

答えて

1

キャンバスやコンテキストを保存しようとするのではなく、データURLを保存することで、必要なことを行うことができます。

var canvas = document.getElementById("canvas"); 
var ctx = canvas.getContext('2d'); 

ctx.drawImage(imageObj, x, y, imageObj.width, imageObj.height); 
ctx.drawImage(imageObj2, x2, y2, imageObj2.width, imageObj2.height); 

localStorage.setItem("imageData", canvas.toDataUrl()); 

し、後でそれを復元:

var img = document.createElement('img'); 
img.src = localStorage.getItem("imageData"); 

var canvas = document.getElementById("canvas"); 
var ctx = canvas.getContext('2d'); 

ctx.drawImage(img, x, y, img.width, img.height); 

また、あなたはキャンバスに描くことができます前に、IMGの上に発射する「オンロード」イベントを待つ必要がありますが、私はありません確かに。

+0

私はそれを画像として取得しますが、私の場合、私はまた、キャンバスに描かれた画像の位置(x、y)を知りたいのですが1.htmlで運営されています。私がイメージとして保存して取得すると、キャンバス上の他のオブジェクトに関する情報はありません –

+1

"キャンバス上のオブジェクト"がありません...キャンバス要素は、実際には描画状態とピクセルの集合です。 1つのページですべてを行っても、描かれた内容や場所を伝える方法はありません。 – Prestaul

+0

イメージを描画するときにイメージの場所を保存してから、そのオブジェクトをデータURL ... – Prestaul

1

これは正しい方法ではないと思います。 理由:localstorage APIは、文字列のキーと値のペアのみを保持します。したがって、キャンバス要素の文字列表現が必要です。ここ

ルック:この場合

Javascript Canvas Serialization/Deserialization?

+0

私はキャンバスに画像の場所を保持したいとPrestaulに答えました。 2.htmlでは、これらの画像は、(x、y)の位置に関連するいくつかのプロパティを持つため、これが必要です –

関連する問題