Prime810 commited on
Commit
2d74efe
·
verified ·
1 Parent(s): 7e5a3e2

Update Frontend/scripts.js

Browse files
Files changed (1) hide show
  1. Frontend/scripts.js +23 -7
Frontend/scripts.js CHANGED
@@ -1,7 +1,8 @@
1
  const video = document.querySelector("#videoElement");
2
- let currentFacingMode = "user";
3
  let stream = null;
4
 
 
5
  function startCamera(facingMode = "user") {
6
  if (stream) {
7
  stream.getTracks().forEach(track => track.stop());
@@ -13,31 +14,39 @@ function startCamera(facingMode = "user") {
13
  video.srcObject = stream;
14
  })
15
  .catch((err) => {
16
- console.error("Camera error: ", err);
17
  alert("Camera access failed. Please allow camera permissions.");
18
  });
19
  }
20
 
 
21
  function toggleCamera() {
22
  currentFacingMode = currentFacingMode === "user" ? "environment" : "user";
23
  startCamera(currentFacingMode);
24
  }
25
 
 
26
  function captureAndSend() {
27
  if (!stream) {
28
  alert("Camera is not started yet!");
29
  return;
30
  }
31
 
 
32
  const canvas = document.createElement('canvas');
33
  canvas.width = video.videoWidth;
34
  canvas.height = video.videoHeight;
 
35
  const context = canvas.getContext('2d');
36
  context.drawImage(video, 0, 0, canvas.width, canvas.height);
 
 
37
  const dataUrl = canvas.toDataURL("image/jpeg");
38
 
 
39
  document.getElementById("snapshotImage").src = dataUrl;
40
 
 
41
  fetch("https://prime810-facefeel.hf.space/process_image", {
42
  method: "POST",
43
  headers: { "Content-Type": "application/json" },
@@ -45,19 +54,26 @@ function captureAndSend() {
45
  })
46
  .then(response => response.json())
47
  .then(data => {
 
48
  document.getElementById("emojiDisplay").innerHTML =
49
- `<img src="${data.emoji}" alt="Emoji">`;
50
- document.getElementById("emotionText").textContent = `Emotion: ${data.emotion}`;
 
51
 
 
52
  const link = document.getElementById("downloadEmoji");
53
  link.href = data.emoji;
54
  link.style.display = "inline-block";
 
 
 
 
55
  })
56
  .catch(error => {
57
  console.error("Error:", error);
58
- alert("Failed to get emoji. Check if backend is running.");
59
  });
60
  }
61
 
62
- // Auto start camera
63
- startCamera();
 
1
  const video = document.querySelector("#videoElement");
2
+ let currentFacingMode = "user"; // "user" = front, "environment" = back
3
  let stream = null;
4
 
5
+ // Initialize camera with given facing mode
6
  function startCamera(facingMode = "user") {
7
  if (stream) {
8
  stream.getTracks().forEach(track => track.stop());
 
14
  video.srcObject = stream;
15
  })
16
  .catch((err) => {
17
+ console.error("Error accessing camera: ", err);
18
  alert("Camera access failed. Please allow camera permissions.");
19
  });
20
  }
21
 
22
+ // Flip between front and back camera
23
  function toggleCamera() {
24
  currentFacingMode = currentFacingMode === "user" ? "environment" : "user";
25
  startCamera(currentFacingMode);
26
  }
27
 
28
+ // Capture current frame from video, show it, and send to backend
29
  function captureAndSend() {
30
  if (!stream) {
31
  alert("Camera is not started yet!");
32
  return;
33
  }
34
 
35
+ // Create a canvas to capture the frame
36
  const canvas = document.createElement('canvas');
37
  canvas.width = video.videoWidth;
38
  canvas.height = video.videoHeight;
39
+
40
  const context = canvas.getContext('2d');
41
  context.drawImage(video, 0, 0, canvas.width, canvas.height);
42
+
43
+ // Convert canvas to data URL (JPEG)
44
  const dataUrl = canvas.toDataURL("image/jpeg");
45
 
46
+ // Show captured image preview in <img>
47
  document.getElementById("snapshotImage").src = dataUrl;
48
 
49
+ // Send captured image to backend
50
  fetch("https://prime810-facefeel.hf.space/process_image", {
51
  method: "POST",
52
  headers: { "Content-Type": "application/json" },
 
54
  })
55
  .then(response => response.json())
56
  .then(data => {
57
+ // Display returned emoji and emotion
58
  document.getElementById("emojiDisplay").innerHTML =
59
+ <img src="${data.emoji}" style="width:200px; border-radius:10px;">;
60
+ document.getElementById("emotionText").textContent =
61
+ Emotion: ${data.emotion};
62
 
63
+ // Show download button for emoji image
64
  const link = document.getElementById("downloadEmoji");
65
  link.href = data.emoji;
66
  link.style.display = "inline-block";
67
+
68
+ // Play emoji sound if available
69
+ const sound = document.getElementById("emojiSound");
70
+ if (sound) sound.play();
71
  })
72
  .catch(error => {
73
  console.error("Error:", error);
74
+ alert("Failed to get emoji. Is your backend running?");
75
  });
76
  }
77
 
78
+ // Start camera automatically on page load
79
+ startCamera();