Spaces:
Runtime error
Runtime error
| document.addEventListener('DOMContentLoaded', () => { | |
| const video = document.getElementById('video'); | |
| const canvas = document.getElementById('canvas'); | |
| const captureButton = document.getElementById('capture'); | |
| const message = document.getElementById('message'); | |
| // Access the webcam | |
| navigator.mediaDevices.getUserMedia({ video: true }) | |
| .then(stream => { | |
| video.srcObject = stream; | |
| }) | |
| .catch(err => { | |
| message.textContent = 'Error accessing webcam: ' + err; | |
| message.style.color = 'red'; | |
| }); | |
| // Capture image when button is clicked | |
| captureButton.addEventListener('click', () => { | |
| const context = canvas.getContext('2d'); | |
| canvas.width = video.videoWidth; | |
| canvas.height = video.videoHeight; | |
| context.drawImage(video, 0, 0, canvas.width, canvas.height); | |
| // Convert to base64 | |
| const dataUrl = canvas.toDataURL('image/png'); | |
| // Send to server | |
| fetch('/capture', { | |
| method: 'POST', | |
| headers: { | |
| 'Content-Type': 'application/x-www-form-urlencoded', | |
| }, | |
| body: 'image=' + encodeURIComponent(dataUrl) | |
| }) | |
| .then(response => response.json()) | |
| .then(data => { | |
| if (data.error) { | |
| message.textContent = 'Error: ' + data.error; | |
| message.style.color = 'red'; | |
| } else { | |
| message.textContent = data.message + ' (' + data.filename + ')'; | |
| message.style.color = 'green'; | |
| } | |
| }) | |
| .catch(err => { | |
| message.textContent = 'Error: ' + err; | |
| message.style.color = 'red'; | |
| }); | |
| }); | |
| }); |