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

        通過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號
        主站蜘蛛池模板: 337P亚洲精品色噜噜| 成人国产精品动漫欧美一区| 欧美精品华人在线| 亚洲精品二三区| 成人午夜精品亚洲日韩| 国内精品久久久久久99蜜桃| 欧美激情精品久久久久久| 97久久精品国产精品青草| 中文精品无码中文字幕无码专区| 国产精品 日韩欧美| 精品国产福利第一区二区三区| 久久久久久久久无码精品亚洲日韩 | 亚洲国产精品视频| 精品多毛少妇人妻AV免费久久| 中文字幕亚洲精品资源网| CAOPORM国产精品视频免费| 日韩欧精品无码视频无删节 | 国产精品视频色拍拍| 中文字幕无码精品三级在线电影| 久久www免费人成精品香蕉| 国产精品福利在线观看免费不卡 | …久久精品99久久香蕉国产| 无码少妇精品一区二区免费动态| 无码8090精品久久一区| 久久99精品免费一区二区| 国产精品麻豆入口| 91久久福利国产成人精品| 久久精品国产免费| www.久久精品| 3D动漫精品一区二区三区| 国产成人无码精品一区二区三区| 精品久久久久久无码专区不卡| 久久精品无码专区免费东京热| 亚洲精品无码AV人在线播放| 中文成人无字幕乱码精品区| 亚洲线精品一区二区三区| 亚洲国产另类久久久精品黑人| 亚洲码国产精品高潮在线| 午夜精品乱人伦小说区| 久久夜色精品国产欧美乱| 少妇人妻精品一区二区三区|