【发布时间】:2016-07-21 08:31:21
【问题描述】:
我的代码卡住了。
问题:我有画布,我在里面画线。在我完成后,我希望这些行留在我离开的正确位置(在重新加载网站之前)。所以我需要将该画布发送到 mysql 数据库。但在这里我卡住了。我是否首先需要创建 .png 图像,然后尝试将该图像信息发送到数据库?或者我可以通过使用 AJAX 将它从代码直接发送到数据库?看了很多资料,现在很迷茫。
如果我将使用方法HTMLgetImageData() 和HTMLputImageData() 那么我需要在我的服务器中创建一些真实的图像吗?或者我可以直接从画布上拿走?并发送到mysql数据库? :)
所以现在我有 html 中的 Canvas 和一些用于绘制线条的脚本:
$(".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);
});
也许有人可以给我一些建议?也许关于下一步的事情?从这一刻起我应该做什么?
【问题讨论】:
标签: javascript php mysql canvas html5-canvas