js调用摄像头
程序员文章站
2022-07-04 23:02:43
详情源码请参见下方的 GitHub !!! ......
详情源码请参见下方的 github !!!
1 <div> 2 <b>调用移动端摄像头</b><br> 3 <label>照相机: <input type="file" id='image' accept="image/*" capture='camera'></label> 4 <label>摄像机: <input type="file" id='video' accept="video/*" capture='camcorder'></label> 5 </div> 6 <hr> 7 <div class="box1"> 8 <div> 9 <button onclick="getmedia()">开启摄像头</button> 10 <video id="video" width="600" height="400" autoplay="autoplay"></video> 11 </div> 12 <div> 13 <button onclick="takephoto()">拍照</button> 14 <canvas id="canvas" width="600" height="400"></canvas> 15 </div> 16 </div> 17 <script> 18 function getmedia() { 19 let constraints = { 20 video: { 21 width: 600, 22 height: 400 23 }, 24 audio: true 25 }; 26 //获得video摄像头区域 27 let video = document.getelementbyid("video"); 28 29 // 这里介绍新的方法,返回一个 promise对象 30 // 这个promise对象返回成功后的回调函数带一个 mediastream 对象作为其参数 31 // then()是promise对象里的方法 32 // then()方法是异步执行,当then()前的方法执行完后再执行then()内部的程序 33 34 // 避免数据没有获取到 35 let promise = navigator.mediadevices.getusermedia(constraints); 36 // 成功调用 37 promise.then(function (mediastream) { 38 /* 使用这个mediastream */ 39 video.srcobject = mediastream; 40 video.play(); 41 console.log(mediastream); // 对象 42 }) 43 // 失败调用 44 promise.catch(function (err) { 45 /* 处理error */ 46 console.log(err); // 拒签 47 }); 48 } 49 50 function takephoto() { 51 //获得canvas对象 52 let video = document.getelementbyid("video"); 53 let canvas = document.getelementbyid("canvas"); 54 let ctx = canvas.getcontext('2d'); 55 ctx.drawimage(video, 0, 0, 600, 400); 56 } 57 </script>