Wie zu verwenden Fabric.js so speichern Sie ein Bild als ein Bild
Habe ich eine Fabric.js Prototyp, wo die Leute laden können Fotos, text und Karten in den canvas-Bereich. Wenn Sie fertig sind, möchte ich Ihnen speichern zu können, die Leinwand wie ein Bild. Ich habe versucht, mit dem standard:
canvasURL = canvas.toDataURL();
var image = new Image();
image.src = canvas.toDataURL("image/png");
$('#canvasContainer').replaceWith(image);
aber es sagt, dass die Leinwand ist tainted
- denke ich da an die Bilder (die obige Methode funktioniert, wenn es nur text). Der Fehler ist:
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
Kann ich nutzen Gewebe eingebaute Methode zum speichern als SVG:
var canvasSVG = canvas.toSVG();
$('#canvasContainer').replaceWith(canvasSVG);
Aber ich hätte lieber ein PNG/JPG. Irgendwelche Ideen?
Hier ist die Fabric.js Dokumentation zur Serialisierung der Leinwand.
http://fabricjs.com/fabric-intro-part-3/#serialization
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen folgende Bedingungen erfüllt sein:
<img>
Elemente enthalten muss, einecrossorigin
Attribut.HTMLMediaElement
s, speziellHTMLImageElement
s. Dies ist derzeit nur möglich, in Chrome, Firefox und Opera 15+Dies funktioniert gut für mich
Als kleiner Hinweis, denken Sie daran, dass, wenn Sie die Entwicklung auf dem lokalen Rechner sondern auf einem server, werden Sie wahrscheinlich sehen, diese Sicherheits-Fehlermeldung.
Ich Stand vor dem gleichen Problem, löste es, indem zuerst die übergabe der Bild-url in ein ajax-call auf eine php-Datei, konvertieren Sie das Bild und bringen Sie eine data-url
stellen Sie sicher, dass die async:false für den ajax-call
können Sie die zurückgegebenen Daten zu erstellen Sie Ihre Bild-Objekt und laden Sie es auf die Leinwand.