Gibt es eine Möglichkeit, den Inhalt eines HTML-Canvas als Binärdaten zu lesen?
Im Moment habe ich den folgenden HTML-Code, um eine Eingabedatei und die Leinwand darunter anzuzeigen:
<p><button id="myButton" type="button">Get Image Content</button></p>
<p>Input:<input id="fileInput" type="file"/></p>
<p>Canvas<canvas id="myCanvas" width="578" height="200"/></p>
Ich habe dann meine Eingabedatei so eingerichtet, dass die Zeichenfläche korrekt eingestellt wird, was gut funktioniert:
$('#fileInput').on('change', function() {
$.each(this.files, function() {
var image = new Image();
image.src = window.URL.createObjectURL(this);
image.onload = function() {
$("canvas").drawImage({
source: image,
x: 50, y: 50,
width: 100,
fromCenter: false
});
};
});
});
Ich muss jetzt die Binärdaten (Base64-codiert) vom Canvas abrufen, wenn auf die Schaltfläche geklickt wird, damit die Daten auf den Server übertragen werden ...
Das Endergebnis ist, dass ich dem Benutzer die Möglichkeit geben muss, eine Datei auszuwählen, sie zuzuschneiden / ihre Größe zu ändern und dann auf eine Schaltfläche zu klicken, an welcher Stelle das bearbeitete Bild auf den Server hochgeladen wird (ich kann es nicht serverseitig tun Zuschneiden / Ändern der Größe aufgrund serverseitiger Einschränkungen ...)
Jede Hilfe wäre toll! Prost
quelle
Kurze Antwort:
const base64Canvas = canvas.toDataURL("image/jpeg").split(';base64,')[1];
quelle
;base64,
Wert teilen mussten . Hat mich 45 Minuten lang verrückt gemachtSehen, wie Sie Ihre Leinwand mit zeichnen
$("canvas").drawImage();
Es scheint, dass Sie jQuery Canvas ( jCanvas ) von Caleb Evans verwenden. Ich benutze dieses Plugin tatsächlich und es hat eine einfache Möglichkeit, Canvas Base64-Image-String mit abzurufen
$('canvas').getCanvasImage();
Hier ist eine funktionierende Geige für Sie: http://jsfiddle.net/e6nqzxpn/
quelle
canvas.toDataURL();
jedoch einfacher erscheint.