人脸识别-调用摄像头~

港控/mmm° 2024-02-19 18:21 124阅读 0赞
  1. <p>
  2. <button onclick="openMedia()">打开</button>
  3. <button onclick="closeMedia()">关闭</button>
  4. <button onclick="drawMedia()">截取</button>
  5. </p>
  6. <video id="video" class="bg"></video>
  7. <canvas id="qr-canvas"></canvas>
  8. <script type="text/javascript">
  9. var video = document.querySelector('video');
  10. var text = document.getElementById('text');
  11. var canvas1 = document.getElementById('qr-canvas');
  12. var context1 = canvas1.getContext('2d');
  13. var mediaStreamTrack;
  14. // 一堆兼容代码
  15. window.URL = (window.URL || window.webkitURL || window.mozURL || window.msURL);
  16. if (navigator.mediaDevices === undefined) {
  17. navigator.mediaDevices = {};
  18. }
  19. if (navigator.mediaDevices.getUserMedia === undefined) {
  20. navigator.mediaDevices.getUserMedia = function(constraints) {
  21. var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
  22. if (!getUserMedia) {
  23. return Promise.reject(new Error('getUserMedia is not implemented in this browser'));//此浏览器中未实现GetUserMedia
  24. }
  25. return new Promise(function(resolve, reject) {
  26. getUserMedia.call(navigator, constraints, resolve, reject);
  27. });
  28. }
  29. }
  30. //摄像头调用配置
  31. var mediaOpts = {
  32. audio: false,
  33. video: true,
  34. video: { facingMode: "environment"} // 或者 "user"
  35. // video: { width: 1280, height: 720 }
  36. // video: { facingMode: { exact: "environment" } }// 或者 "user"
  37. }
  38. // 回调
  39. function successFunc(stream) {
  40. mediaStreamTrack = stream;
  41. video = document.querySelector('video');
  42. if ("srcObject" in video) {
  43. video.srcObject = stream
  44. } else {
  45. video.src = window.URL && window.URL.createObjectURL(stream) || stream
  46. }
  47. video.play();
  48. }
  49. function errorFunc(err) {
  50. alert(err.name);
  51. }
  52. // 正式启动摄像头
  53. function openMedia(){
  54. navigator.mediaDevices.getUserMedia(mediaOpts).then(successFunc).catch(errorFunc);
  55. }
  56. //关闭摄像头
  57. function closeMedia(){
  58. mediaStreamTrack.getVideoTracks().forEach(function (track) {
  59. track.stop();
  60. context1.clearRect(0, 0,context1.width, context1.height);//清除画布
  61. });
  62. }
  63. //截取视频
  64. function drawMedia(){
  65. canvas1.setAttribute("width", video.videoWidth);
  66. canvas1.setAttribute("height", video.videoHeight);
  67. context1.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
  68. }
  69. </script>
  70. <%@page pageEncoding="UTF-8" %>
  71. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  72. <c:set var="ctx" value="${pageContext.request.contextPath}"/>
  73. <script>
  74. var ctx="${ctx}/";
  75. </script>
  76. <!doctype html>
  77. <html lang="zh-cmn">
  78. <head>
  79. <meta charset="UTF-8">
  80. <meta name="viewport"
  81. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  82. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  83. <base href="${ctx}/"/>
  84. <link rel="stylesheet" href="webjars/css/bootstrap.css">
  85. <link rel="stylesheet" href="webjars/css/bootstrap-table.css">
  86. <link rel="stylesheet" href="webjars/fonts/css/font-awesome.css">
  87. <link rel="stylesheet" href="webjars/css/sweetalert2.min.css">
  88. <link rel="stylesheet" href="webjars/css/toastr.css">
  89. <%--<link rel="stylesheet" href="${ctx}/static/css/fileinput.css">--%>
  90. <link rel="stylesheet" href="webjars/css/bootstrap-treeview.css">
  91. </head>
  92. <body>

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读