プロジェクトでKonvaJSを使用しています。を画像として保存する必要がありstage/canvas
ます(エクスポートされた画像が高解像度の画像である場合は素晴らしいでしょう)。キャンバス コンテンツを Base64 文字列として返すstage.toDataURL()KonvaJS
という関数があります。この関数の課題は、キャンバスの可視領域のみを返すことです。表示領域だけでなく、キャンバス全体を画像としてエクスポートする必要があります。Canvas2Imageを試してみましたが、キャンバス全体ではなく、可視領域のみを保存しています。それを達成する方法はありますか?これは、いくつかのpoc (概念実証) コードで遊ぶ plunkr です。
var width = window.innerWidth;
var height = window.innerHeight;
var stage = new Konva.Stage({
container: 'container',
width: width,
height: height
});
var layer = new Konva.Layer();
var rectX = stage.getWidth() / 2 - 50;
var rectY = stage.getHeight() / 2 - 25;
(function() {
for (var i = 0; i < 50; i++) {
layer.add(new Konva.Rect({
x: i * 50,
y: 0,
width: 50,
height: 10000,
fill: Konva.Util.getRandomColor()
}));
}
})();
var box = new Konva.Rect({
x: rectX,
y: rectY,
width: 100,
height: 50,
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 4,
draggable: true
});
box.on('mouseover', function() {
document.body.style.cursor = 'pointer';
});
box.on('mouseout', function() {
document.body.style.cursor = 'default';
});
layer.add(box);
layer.draw();
stage.add(layer);
function exportCanvas() {
var dataURL = stage.toDataURL();
window.open(dataURL);
}
document.getElementById('save').addEventListener('click', exportCanvas, false);