站長資訊網
        最全最豐富的資訊網站

        通過HTML5的getUserMedia實現拍照功能示例

        1. 通過getUserMedia調用設備的攝像頭(電腦、手機都可以,取決于瀏覽器對這個API的支持情況),并將資源放入video標簽。
        2. 將video內的視頻資源通過canvas的drawImage API放入canvas里,這個canvas是不顯示的。
        3. 將canvas的內容轉換成base64編碼的webp格式的圖像(如果瀏覽器不支持這個格式,會fallback到png格式)放入img里,于是你就能看到你拍的照片了。

        不廢話了,上代碼:

        HTML

        <!doctype html>  <html>  <head>      <title>html5 capture test</title>      <link rel="stylesheet" href="style.css">  </head>  <body>      <video autoplay></video>      <img src="">      <canvas style="display: none;"></canvas>      <button id="capture">snapshot</button>          <script src="index.js"></script>  </body>  </html>

        JS

        var video = document.querySelector('video');  var canvas = document.querySelector('canvas');  var ctx = canvas.getContext('2d');  var localMediaStream = null;    var snapshot = function () {      if (localMediaStream) {          ctx.drawImage(video, 0, 0);          document.querySelector('img').src = canvas.toDataURL('image/webp');      }  };    var sizeCanvas = function () {      setTimeout(function () {          canvas.width = video.videoWidth;          canvas.height = video.videoHeight;          img.width = video.videoWidth;          img.height = video.videoHeight;      }, 100);  };    var btnCapture = document.getElementById('capture');  btnCapture.addEventListener('click', snapshot, false);    navigator.webkitGetUserMedia(      {video: true},      function (stream) {          video.src = window.URL.createObjectURL(stream);          localMediaStream = stream;          sizeCanvas();      },      function () {          alert('your browser does not support getUserMedia');      }  );

        幾個注意事項:

        不同瀏覽器對getUserMedia的支持情況不同,需要加上前綴,比如webkitGetUserMedia、mozGetUserMedia、msGetUserMedia,如果你想屏蔽這一問題的話,可以這樣做:

        // cross platforms  var myGetUserMedia = navigator.getUserMedia ||                    navigator.webkitGetUserMedia ||                   navigator.mozGetUserMedia ||                    navigator.msGetUserMedia;

        Chrome對file:///做了很多的限制,跨域就不說了,geolocation也不能在本地下使用,這個getUserMedia也是。

        這個sizeCanvas函數做的事情就是保證你拍到的照片的大小和攝像頭拍到的大小是一樣的,否則會出現拍到的照片只有攝像頭錄到的一部分畫面的情況。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 无码人妻精品中文字幕免费| 国产精品久久自在自线观看| 国产在线精品一区二区在线观看| 99久久精品久久久久久清纯| 久久久无码精品亚洲日韩蜜臀浪潮 | 精品午夜久久福利大片| 国产成人1024精品免费| 国产午夜无码精品免费看| 香港三级精品三级在线专区| 91大神精品全国在线观看| avtt天堂网久久精品| 欧美亚洲日本久久精品| 国产精品手机在线观看你懂的| 好吊妞视频精品| 东京热TOKYO综合久久精品| 日韩精品国产另类专区| 亚洲综合精品网站| 无码人妻精品一区二| 久久99精品久久久久久噜噜| 国产精品va在线观看无码| 一区二区精品在线| 久久久91精品国产一区二区三区| 91精品在线看| 国产精品99久久精品| 国产精品一国产精品| 国产69精品久久久久777| 久久国产免费观看精品3| 无码国产乱人伦偷精品视频| 亚洲av永久无码精品国产精品| 午夜精品久久影院蜜桃| 日韩精品一二三四区| 午夜精品一区二区三区在线观看| 青青久久精品国产免费看| 人妻少妇看A偷人无码精品视频| 欧美成人精品高清视频在线观看| 久久精品国产亚洲一区二区三区| 精品国产福利尤物免费| 国产亚洲精品免费视频播放| 久久精品国产福利国产琪琪| 欧美日韩国产成人高清视频,欧美日韩在线精品一 | 真实国产乱子伦精品视频|