2011-10-26 37 views
6

これは可能ではないかもしれませんが、私の状況には理想的です。私はスライドプレゼンターとしてhtml5キャンバスを使用しています。これを使用してローカルマシンに描画して保存することができます。データとしてのhtml5キャンバスをmysqlデータベースに保存

私の目標は、代わりにこれをいくつかの異なる方法でデータベースに保存することです。私は起こるしたい何

:スライドとユーザーまで

キャンバス負荷がそれに描画することができます。保存されたデータは、データベースのセルに保存されます。ユーザーがスライドを見るためにログインし直すと、元のスライドが表示され、注釈が上に表示されます。

この方法を使用すると、一意の人物ごとに数千の画像を保存する必要がなくなり、元のスライドを消去せずに過去の注釈を消去することができます。ここで

アップロードのための私のコードです:

キャンバス:

var img = new Image(); 
img.src = 'pdf_images/pdf-save-0.png'; 
img.onload = function() { 
    oCtx.drawImage(img, 0, 0) 
} 

私は必要なもの:元のイメージを引っ張る

<input type="button" id="savepngbtn" value="Save Slide"> 

<!-- Main Canvas/Main Slide --> 
<div id="main"><canvas id="drop1" class="drop" style=" background-repeat:no-repeat;" width="680" height="510"></canvas></div> 

  • セーブ機能/機能作成された行をデータとして保存するデータベース
  • データをアップロードして以前作成したキャンバスに表示するコード。

これが可能かどうかはわかりませんが、人は本当に素敵で、人生の節約になるでしょうか?ありがとう!

+0

あなたが使用しているDBが大きなBLOBの保存を最適化するために特別にセットアップされていない限り、私はそのデータベースに画像データを保存していません...あなたがMySQLを使用しているなら、それをHDに保存してファイル名を保存するよりもずっと遅くなります。 –

答えて

5

キャンバスはデフォルトで透明なので、他の画像の上に簡単に配置して描画することができます。

canvas.toDataURL()を使用して、キャンバスのbase64でエンコードされたpngを取得します。これをデータベースに保存することができます。通常のポストリクエストを使用して、サーバーにデータを送信することができます。その後、dbからデータを取得し、それをImage要素のsrcとして設定し、canvas 2dコンテキストでdrawImageを使用してイメージをキャンバスに書き戻すことで、復元できます。

ユーザーが描画してデータベースに保存するすべてのストークを記録することもできます。ページをロードするときに、ストロークを再描画することができます。

1

署名を取得することを目的としていますが、Thomas J BradleyのSignature Padプロジェクトでは、キャプチャされた図面を保存して再生するための有用な情報とコードサンプルがあるはずです。

関連する問題