一、开始
最近各种笔试都会要求开启摄像头,我觉得很神奇,就看了一下文档,原来是调用navigator.getUserMedia这个 API,然后是利用 canvas 的 drawImage 方法来实现拍照
二、模拟
话不多说,直接上代码,很奇怪的是为什么画图的时候宽高比是 2:1,注意 https 协议才能使用这个接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Video</title> <body> <video id="video"></video> <button id="camera">点击拍照</button> <canvas id="pic" style="height:300px;width: 300px"></canvas> <script> var video = document.getElementById('video'); // 成功会返回流,调用window.URL.createObjectURL来读取数据 var success = function(stream) { video.src = window.URL.createObjectURL(stream); video.onloadedmetadata = function(e) { video.play(); }; } var fail = function(err) { console.log("发生错误: " + err.name); } navigator.getUserMedia({video: {height: 300, width:300}},success, fail);
var ctx = document.getElementById('pic').getContext('2d'); document.getElementById("camera").addEventListener("click",function(){ ctx.drawImage(video,0, 0, 300, 150); }); </script> </body> </html>
|