mnist-learning/ui/index.html

107 lines
3.1 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>绘图应用</title>
<style>
#canvas, #canvas2 {
background-color: black;
cursor: crosshair;
}
#result {
margin-top: 10px;
font-weight: bold;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<button onclick="submitDrawing()">提交</button>
<button onclick="clearCanvas()">清除</button>
<div>结果: <span id="result"></span></div>
<script>
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
let isDrawing = false;
canvas.addEventListener("mousedown", startDrawing);
canvas.addEventListener("mousemove", draw);
canvas.addEventListener("mouseup", stopDrawing);
canvas.addEventListener("mouseout", stopDrawing);
function startDrawing(e) {
isDrawing = true;
draw(e);
}
function draw(e) {
if (!isDrawing) return;
const rect = canvas.getBoundingClientRect();
const mouseX = e.clientX - rect.left;
const mouseY = e.clientY - rect.top;
context.lineWidth = 50;
context.lineCap = "round";
context.strokeStyle = "white";
context.lineTo(mouseX, mouseY);
context.stroke();
context.beginPath();
context.moveTo(mouseX, mouseY);
}
function stopDrawing() {
isDrawing = false;
context.beginPath();
}
function submitDrawing() {
const imageDataUrl = canvas.toDataURL("image/png");
const image = new Image();
image.src = imageDataUrl;
image.onload = function() {
const tempCanvas = document.createElement("canvas");
const tempContext = tempCanvas.getContext("2d");
tempCanvas.width = 28;
tempCanvas.height = 28;
tempContext.drawImage(image, 0, 0, 28, 28);
const croppedImageDataUrl = tempCanvas.toDataURL("image/png");
submitToAPI(croppedImageDataUrl);
};
}
function clearCanvas() {
// 清除Canvas上的绘图
context.clearRect(0, 0, canvas.width, canvas.height);
}
function submitToAPI(imageDataUrl) {
fetch('/api/predict', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ image: imageDataUrl }),
})
.then(response => response.json())
.then(data => {
console.log('API返回的结果:', data.result);
document.querySelector("#result").innerText = data.result.toString();
})
.catch(error => {
console.error('提交失败', error);
});
}
</script>
</body>
</html>