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

        通過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精品国产99久久6男男| 国产精品女同一区二区| 国产精品国产三级国产a| 一本色道久久88精品综合 | 四虎国产成人永久精品免费| 伊人久久大香线蕉精品| 中文字幕精品一区| 精品久久久久中文字幕一区| 日本精品不卡视频| 2020久久精品国产免费| 少妇人妻无码精品视频| 亚洲国产精品成人| 九九热这里只有国产精品| 亚洲人成亚洲精品| 精品久久久久久久| .精品久久久麻豆国产精品| 精品卡一卡二卡乱码高清| 亚洲精品制服丝袜四区| 蜜臀久久99精品久久久久久| 国产精品99久久不卡| 亚洲精品性视频| 久久精品免费一区二区三区| 97久久综合精品久久久综合| 精品久久无码中文字幕| 久久精品天天中文字幕人妻| 熟妇无码乱子成人精品| 亚洲Av无码精品色午夜| 一本久久精品一区二区| 亚洲精品NV久久久久久久久久| 99热门精品一区二区三区无码| 国产福利精品视频自拍| 亚洲天堂久久精品| 中文字幕精品一区二区日本| 99久久婷婷免费国产综合精品| 久久精品成人欧美大片| 国产精品 羞羞答答在线| 91精品视频在线| 四虎永久在线精品国产免费| 久久国产乱子伦精品免费强| 国产a精品视频| 欧美精品华人在线|