nagasurendra commited on
Commit
1f082a8
·
verified ·
1 Parent(s): 5beacad

Create static/js/camera.js

Browse files
Files changed (1) hide show
  1. static/js/camera.js +81 -0
static/js/camera.js ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ let video = document.getElementById('video');
2
+ let canvas = document.getElementById('canvas');
3
+ let openCameraBtn = document.getElementById('openCamera');
4
+ let captureBtn = document.getElementById('capture');
5
+ let toggleCameraBtn = document.getElementById('toggleCamera');
6
+ let retakeBtn = document.getElementById('retake');
7
+ let uploadBtn = document.getElementById('upload');
8
+ let cameraContainer = document.getElementById('cameraContainer');
9
+ let previewContainer = document.getElementById('previewContainer');
10
+ let messageDiv = document.getElementById('message');
11
+ let currentStream = null;
12
+ let facingMode = 'user'; // Default to front camera
13
+
14
+ async function startCamera() {
15
+ try {
16
+ if (currentStream) {
17
+ currentStream.getTracks().forEach(track => track.stop());
18
+ }
19
+ currentStream = await navigator.mediaDevices.getUserMedia({
20
+ video: { facingMode: facingMode }
21
+ });
22
+ video.srcObject = currentStream;
23
+ cameraContainer.style.display = 'block';
24
+ openCameraBtn.style.display = 'none';
25
+ } catch (err) {
26
+ messageDiv.textContent = 'Error accessing camera: ' + err.message;
27
+ }
28
+ }
29
+
30
+ function stopCamera() {
31
+ if (currentStream) {
32
+ currentStream.getTracks().forEach(track => track.stop());
33
+ currentStream = null;
34
+ }
35
+ cameraContainer.style.display = 'none';
36
+ openCameraBtn.style.display = 'block';
37
+ }
38
+
39
+ openCameraBtn.addEventListener('click', startCamera);
40
+
41
+ captureBtn.addEventListener('click', () => {
42
+ canvas.width = video.videoWidth;
43
+ canvas.height = video.videoHeight;
44
+ canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
45
+ previewContainer.style.display = 'block';
46
+ cameraContainer.style.display = 'none';
47
+ stopCamera();
48
+ });
49
+
50
+ toggleCameraBtn.addEventListener('click', () => {
51
+ facingMode = facingMode === 'user' ? 'environment' : 'user';
52
+ startCamera();
53
+ });
54
+
55
+ retakeBtn.addEventListener('click', () => {
56
+ previewContainer.style.display = 'none';
57
+ startCamera();
58
+ });
59
+
60
+ uploadBtn.addEventListener('click', async () => {
61
+ const imageData = canvas.toDataURL('image/jpeg');
62
+ try {
63
+ const response = await fetch('/upload', {
64
+ method: 'POST',
65
+ headers: { 'Content-Type': 'application/json' },
66
+ body: JSON.stringify({ image: imageData })
67
+ });
68
+ const result = await response.json();
69
+ messageDiv.textContent = result.message;
70
+ if (result.status === 'success') {
71
+ messageDiv.style.color = 'green';
72
+ previewContainer.style.display = 'none';
73
+ openCameraBtn.style.display = 'block';
74
+ } else {
75
+ messageDiv.style.color = 'red';
76
+ }
77
+ } catch (err) {
78
+ messageDiv.textContent = 'Error uploading image: ' + err.message;
79
+ messageDiv.style.color = 'red';
80
+ }
81
+ });