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

        通過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號
        主站蜘蛛池模板: 宅男在线国产精品无码| 国产在线精品一区二区中文| 亚洲日韩精品一区二区三区无码| 精品久久久久久中文字幕| 亚洲精品无码MV在线观看| 国产精品乱码一区二区三区| 国产办公室秘书无码精品99| 亚洲精品无码专区在线播放 | 国产亚洲欧洲精品| 亚洲精品无码久久久久AV麻豆| 久久久91精品国产一区二区三区 | 久久精品这里只有精99品| 久久免费精品一区二区| 国产三级久久久精品麻豆三级| 亚洲精品无码AV中文字幕电影网站| 国产精品免费久久久久影院 | 国内精品久久久久国产盗摄| 亚洲精品自产拍在线观看动漫| 国产精品亚韩精品无码a在线| 一本一道精品欧美中文字幕| 日韩视频中文字幕精品偷拍| 精品日本一区二区三区在线观看 | 中文字幕精品无码一区二区| 欧美精品黑人粗大| 久久www免费人成精品香蕉| 国产欧美日本精品| 国产精品免费久久| 国产高清在线精品一区二区三区 | 久久99精品国产麻豆不卡| 国产精品永久久久久久久久久| 白浆都出来了视频国产精品| 一本大道久久a久久精品综合| 色花堂国产精品第一页| 在线人成精品免费视频| 亚洲精品国产成人专区| 亚洲国产成人久久精品动漫 | 亚洲动漫精品无码av天堂 | 欧美jizzhd精品欧美| 亚洲2022国产成人精品无码区| 亚洲精品~无码抽插| 人妻少妇精品视频一区二区三区 |