あなたはキャンバスをレンダリングしましたが、どのように組み合わせるかは明確ではありません - オーバーレイされた、サイドバイサイドですか?いずれの場合も、Canvas.context.drawImage()
を使用して新しいキャンバスオブジェクトに追加し、Canvas.toDataURL()
メソッドを使用して新しいキャンバスのerm、dataURLを返すことができます。
このような何か多分...
/* assumes each canvas has the same dimensions */
var overlayCanvases = function(cnv1, cnv2, cnv3) {
var newCanvas = document.createElement('canvas'),
ctx = newCanvas.getContext('2d'),
width = cnv1.width,
height = cnv1.height;
newCanvas.width = width;
newCanvas.height = height;
[cnv1, cnv2, cnv3].forEach(function(n) {
ctx.beginPath();
ctx.drawImage(n, 0, 0, width, height);
});
return newCanvas.toDataURL();
};
/* assumes each canvas has the same width */
var verticalCanvases = function(cnv1, cnv2, cnv3) {
var newCanvas = document.createElement('canvas'),
ctx = newCanvas.getContext('2d'),
width = cnv1.width,
height = cnv1.height + cnv2.height + cnv3.height;
newCanvas.width = width;
newCanvas.height = height;
[{
cnv: cnv1,
y: 0
},
{
cnv: cnv2,
y: cnv1.height
},
{
cnv: cnv3,
y: cnv1.height + cnv2.height
}].forEach(function(n) {
ctx.beginPath();
ctx.drawImage(n.cnv, 0, n.y, width, n.cnv.height);
});
return newCanvas.toDataURL();
};
/* USAGE */
var dURL1 = overlayCanvases(canvas1,canvas2,canvas3);
var dURL2 = verticalCanvases(canvas1,canvas2,canvas3);
overlayCanvases()
機能は、互いの上にキャンバスを置きますので、引数の順序が重要です。 verticalCanvases()
は、キャンバスを垂直方向と降順に揃えます。ここで気づくべき重要なことは、Canvas.context.drawImage()
があるカンバスを別のものにペイントすることを可能にすることです。相対的な位置付けは、あなたの目的に合うように揺らすことができます。
上記の機能:https://jsfiddle.net/BnPck/cyLrmpjy/
[mcve]を提供できますか? HTMLを追加し、キャンバスにいくつかのサンプル画像を取り込みます。それが現れても、私たちはほとんど進んでいません。また、どのように組み合わせるのですか?これは役立つでしょうか?http://stackoverflow.com/questions/6787899/combining-two-or-more-canvas-elements-with-some-sort-of-blending? – AgataB