Ich bin mit meinem Code fest.HTML Canvas speichern auf MySQL-Datenbank
Problem: Ich habe Leinwand und drinnen zeichne ich die Linien. Und nachdem ich fertig bin, möchte ich, dass die Zeilen am richtigen Ort bleiben, wo ich das gelassen habe (vor dem Laden der Website). Also muss ich diese Leinwand an die MySQL-Datenbank senden. Aber hier bin ich geblieben. Muss ich zuerst .png image erstellen und dann versuchen, diese Bildinformationen an die Datenbank zu senden? oder irgendwie kann ich es direkt von Code zu Datenbank senden, indem ich AJAX verwende? Ich lese viele Informationen und bin gerade verwirrt.
Wenn ich die Methode HTMLgetImageData()
und HTMLputImageData()
verwenden werde, dann muss ich ein echtes Bild auf meinem Server erstellen? oder kann ich direkt von der Leinwand nehmen? und an mysql-Datenbank senden? :)
so jetzt habe ich Canvas in HTML und einige Skript zum Zeichnen der Linien:
$(".widget_body").on("mousedown", "canvas", function() {
var id = $(this).attr("id");
var canvas = document.getElementById(id);
var canvas,
context,
dragging = false,
dragStartLocation,
snapshot;
fitToContainer(canvas);
function fitToContainer(canvas){
// Make it visually fill the positioned parent
canvas.style.width ='100%';
canvas.style.height='100%';
// ...then set the internal size to match
canvas.width = canvas.offsetWidth;
canvas.height = canvas.offsetHeight;
}
function getCanvasCoordinates(event) {
var x = event.clientX - canvas.getBoundingClientRect().left,
y = event.clientY - canvas.getBoundingClientRect().top;
return {x: x, y: y};
}
function takeSnapshot() {
snapshot = context.getImageData(0, 0, canvas.width, canvas.height);
}
function restoreSnapshot() {
context.putImageData(snapshot, 0, 0);
}
function drawLine(position) {
context.beginPath();
context.moveTo(dragStartLocation.x, dragStartLocation.y);
context.lineTo(position.x, position.y);
context.stroke();
}
function dragStart(event) {
dragging = true;
dragStartLocation = getCanvasCoordinates(event);
takeSnapshot();
}
function drag(event) {
var position;
if (dragging === true) {
restoreSnapshot();
position = getCanvasCoordinates(event);
drawLine(position);
}
}
function dragStop(event) {
dragging = false;
restoreSnapshot();
var position = getCanvasCoordinates(event);
drawLine(position);
}
function clearCanvas(event) {
context.clearRect(0, 0, canvas.width, canvas.height);
}
context = canvas.getContext('2d');
context.strokeStyle = 'purple';
context.lineWidth = 4;
context.lineCap = 'round';
canvas.addEventListener('mousedown', dragStart, false);
canvas.addEventListener('mousemove', drag, false);
canvas.addEventListener('mouseup', dragStop, false);
canvas.addEventListener('dblclick', clearCanvas, false);
});
Vielleicht etwas zu mir vorschlagen jemand kann? Vielleicht etwas über die nächsten Schritte, was muss ich von diesem Moment an machen?
Jetzt bekomme ich Fehler wie diese. Beim Push "data: image ...." bringt es mir Bild auf der Webseite, aber es erscheint immer noch nicht auf meinem Server. (Index): 482 Uncaught TypeError: Fehler beim Ausführen von 'putImageData' auf 'CanvasRenderingContext2D': Parameter 1 ist nicht vom Typ 'ImageData'.restoreSnapshot @ (Index): 482dragStop @ (Index): 510 (Index): 544 Daten gespeichert: Daten: image/jpeg; base64, iVBORw0KGgoAAAANSUhEUgAAAUAAAAEXCAYAAADcG53lAAATn0lEQ ... kQwJGjx3YEEGgiQACb8GmMAAIjEyCAI0eP7Qgg0ETg/wGB7LJjfSjibQAAAABJRU5ErkJggg == – Skyluk