[解決済み] あるキャンバスの内容をローカルに別のキャンバスにコピーする方法
質問
あるキャンバスのすべてのコンテンツをコピーして、クライアント側で別のキャンバスに転送したいのです。私は、私が
canvas.toDataURL()
と
context.drawImage()
メソッドを使用して実装していますが、いくつかの問題に遭遇しています。
私の解決策は
Canvas.toDataURL()
を取得し、これをJavascriptのImageオブジェクトに格納し、その上で
context.drawImage()
メソッドで元に戻します。
しかし、私は
toDataURL
メソッドは64ビットでエンコードされたタグを返します。
"data:image/png;base64,"
が付加されています。これは有効なタグではないようですが (これを削除するために RegEx を使うことはできます)、64 ビットのエンコードされた文字列は
"data:image/png;base64,"
の後にある64ビットでエンコードされた文字列は、有効な画像なのでしょうか?私は次のように言うことができますか?
image.src=iVBORw...ASASDAS
と言って、これをキャンバスに描き戻すことはできますか?
関連する問題を調べてみました。 キャンバス画像をあるキャンバスから別のキャンバスに base64 を使って表示する
しかし、解決策は正しくないようです。
どのように解決するのですか?
実は、画像を作成する必要は全くないのです。
drawImage()
は
Canvas
と同じように
Image
オブジェクトを生成します。
//grab the context from your destination canvas
var destCtx = destinationCanvas.getContext('2d');
//call its drawImage() function passing it the source canvas directly
destCtx.drawImage(sourceCanvas, 0, 0);
を使うよりずっと速いです。
ImageData
オブジェクトや
Image
要素で構成されます。
なお
sourceCanvas
は
HTMLImageElement
,
HTMLVideo 要素
または
HTMLCanvasElement
. で述べたように
デイブ
がこの答えの下のコメントで述べているように、あなたは
キャンバスの描画コンテキストをソースとして使用することはできません。
. canvas 要素の代わりに canvas 描画コンテキストを作成した場合、コンテキスト上の元の canvas 要素への参照は、以下のようになります。
context.canvas
.
なぜこれがcanvasを複製する唯一の正しい方法なのかを示すjsPerfを以下に示します。 http://jsperf.com/copying-a-canvas-element
関連
-
[解決済み】ある要素を別の要素に移動させるには?
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] <html xmlns="http://www.w3.org/1999/xhtml">」は何をするものですか?
-
[解決済み] CSSでテキストを垂直方向にセンタリングするには?[重複しています]
-
[解決済み] How do I style a <select> dropdown with only CSS?
-
[解決済み] divの内容を下に揃える方法
-
[解決済み] 再描画のためにキャンバスをクリアする方法
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] あるAngularJSのコントローラが別のコントローラを呼び出すことはできますか?
-
[解決済み】あるdivの上に別のdivを重ねる方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] cssのfit-contentで横幅を自動サイズ調整する
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] CSSでテキストを垂直方向にセンタリングするには?[重複しています]
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] ローカルストレージとCookieの比較
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み] クリアフィックスとは何ですか?
-
[解決済み] Flexbox:水平方向と垂直方向の中央揃え
-
[解決済み] CSS 背景の不透明度 [重複]について