Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. var video = document.createElement("video");
  2. var canvasElement = document.getElementById("canvas");
  3. var canvas = canvasElement.getContext("2d");
  4. var loadingMessage = document.getElementById("loadingMessage");
  5. var outputContainer = document.getElementById("output");
  6. var outputMessage = document.getElementById("outputMessage");
  7. var outputData = document.getElementById("outputData");
  8.  
  9. function drawLine(begin, end, color) {
  10. canvas.beginPath();
  11. canvas.moveTo(begin.x, begin.y);
  12. canvas.lineTo(end.x, end.y);
  13. canvas.lineWidth = 4;
  14. canvas.strokeStyle = color;
  15. canvas.stroke();
  16. }
  17.  
  18. // Use facingMode: environment to attemt to get the front camera on phones
  19. navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment" } }).then(function(stream) {
  20. video.srcObject = stream;
  21. video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen
  22. video.play();
  23. requestAnimationFrame(tick);
  24. });
  25.  
  26. function tick() {
  27. loadingMessage.innerText = "⌛ Loading video..."
  28. if (video.readyState === video.HAVE_ENOUGH_DATA) {
  29. loadingMessage.hidden = true;
  30. canvasElement.hidden = false;
  31. outputContainer.hidden = false;
  32.  
  33. canvasElement.height = video.videoHeight;
  34. canvasElement.width = video.videoWidth;
  35. canvas.drawImage(video, 0, 0, canvasElement.width, canvasElement.height);
  36. var imageData = canvas.getImageData(0, 0, canvasElement.width, canvasElement.height);
  37. var code = jsQR(imageData.data, imageData.width, imageData.height, {
  38. inversionAttempts: "dontInvert",
  39. });
  40. if (code) {
  41. drawLine(code.location.topLeftCorner, code.location.topRightCorner, "#FF3B58");
  42. drawLine(code.location.topRightCorner, code.location.bottomRightCorner, "#FF3B58");
  43. drawLine(code.location.bottomRightCorner, code.location.bottomLeftCorner, "#FF3B58");
  44. drawLine(code.location.bottomLeftCorner, code.location.topLeftCorner, "#FF3B58");
  45. outputMessage.hidden = true;
  46. outputData.parentElement.hidden = false;
  47. outputData.innerText = code.data;
  48. } else {
  49. outputMessage.hidden = false;
  50. outputData.parentElement.hidden = true;
  51. }
  52. }
  53. requestAnimationFrame(tick);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement