Ich baue ein Canvas-Element, in dem Sie ein Hintergrundbild zoomen und schwenken können und per Klick können Sie Symbole hinzufügen. Es ist auf Stoff js gebaut.So speichern Sie Zoomed und Panted Canvas zu DataUrl in Javascript
Also sobald ich Symbole hinzugefügt und gezoomt und geschwenkt habe, möchte ich das Bild in Dataurl speichern. Wenn ich nur canvas.toDataURL verwende, kann ich nur den aktuell angezeigten Bereich sehen. Hat jemand eine Idee, wie ich den gesamten Bereich des Hintergrundbildes mit allen Elementen auf der Leinwand speichern kann? Ich brauche daher eine Funktion, die den Zoom und den Schwenk zurückstellt und die Größe der Leinwand an die Größe des Hintergrundbildes anpasst.
Ich habe ein Beispiel wie meine Leinwand unten initialisiert.
// New Fabric Canvas
var canvas = new fabric.Canvas('c'); //render image to this canvas
window.addEventListener('resize', resizeCanvas, false);
function resizeCanvas() {
canvas.setHeight(window.innerHeight);
canvas.setWidth(window.innerWidth);
canvas.renderAll();
}
// resize on init
resizeCanvas();
// Load image
var image = new Image();
image.onload = function() {
loadImage(image, canvas);
canvas.height = image.height;
canvas.width = image.width;
}
function loadImage(image, canv) {
var img = new fabric.Image(image, {
selectable: false,
lockUniScaling: true,
centeredScaling: true,
alignX: "mid",
alignY: "mid",
});
canv.add(img);
canv.centerObject(img);
}
image.src = 'http://placehold.it/350x150';
<script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.1.0/fabric.all.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="canvasarea" style="background: #000;">
<canvas id='c' onclick="return false;"></canvas>
</div>
http: // Stackoverflow. com/questions/28863678/fabricjs-canvas-reset-nach-zooming –