캔버스를 렌더링했는데 어떻게 결합 할 것인지는 명확하지 않습니다 - 중첩, 나란히? 두 경우 모두 Canvas.context.drawImage()
을 사용하여 새 캔버스 개체에 추가 한 다음 Canvas.toDataURL()
메서드를 사용하여 새 캔버스의 erm, dataURL을 반환 할 수 있습니다.
overlayCanvases()
기능은 서로의 상단에있는 캔버스를 배치합니다
/* 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);
아마 이런 식으로 뭔가 ... 그래서 인수의 순서는 중요합니다. 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