2 つの HTML キャンバスを 1 つのキャンバスにマージしてから、それを画像としてダウンロードしようとしています。私のコードは以下の通りです:
function downloadCanvas() {
var bottleCanvas = document.getElementById('bottleCanvas');
var designCanvas = document.getElementById('editorCanvas');
var bottleContext = bottleCanvas.getContext('2d');
bottleContext.drawImage(designCanvas, 69, 50);
var dataURL = bottleCanvas.toDataURL("image/png");
var link = document.createElement('a');
link.download = "bottle-design.png";
link.href = bottleCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
link.click();
}
ここでの私の問題は、次の行のようです。
bottleContext.drawImage(designCanvas, 69, 50);
これは、一方のキャンバスのコンテンツを他方のキャンバスに描画することを想定していますが、実際にはそうしていますが、コードの後半部分が実行されて画像がダウンロードされるのを防ぎます。この特定の行を削除すると、ダウンロード機能は正常に機能しますが、残念ながらキャンバスの 1 つしかダウンロードされません。
したがって、私の質問は次のいずれかです。ここで何が間違っているのですか? または 2 つの HTML キャンバスをマージして、画像としてダウンロードするにはどうすればよいですか。
(別の注意として、ダウンロード用の上記のコードは Chrome でのみ正常に機能します。他のブラウザーでは、ファイルの名前を設定してファイル拡張子を設定することはできません。)