最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js調(diào)用網(wǎng)絡(luò)攝像頭的方法

 更新時(shí)間:2020年12月05日 17:19:19   作者:Joseph_Bee  
這篇文章主要介紹了js調(diào)用網(wǎng)絡(luò)攝像頭的方法,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下

不支持IE瀏覽器(需要使用flash插件), 支持移動(dòng)端, 未經(jīng)過(guò)完全測(cè)試

PC端使用的時(shí)候, HTML頁(yè)面需要預(yù)留video標(biāo)簽, canvas標(biāo)簽

移動(dòng)端使用的時(shí)候, HTML頁(yè)面需要預(yù)留file標(biāo)簽, canvas標(biāo)簽, img標(biāo)簽

(function (window, document) {
  window.camera = {
    init: function (options) {
      /**
       * options 屬性示例
       * videoID: video控件ID
       * canvasID: canvas控件ID
       * fileID: type為file的input控件的ID
       * imageID: img控件的ID
       * videoEnable: 是否啟用攝像頭
       * audioEnable: 是否啟用麥克風(fēng)
       * videoWidth: 視頻寬度
       * videoHeight: 視頻高度
       * photoWidth: 拍照寬度
       * photoHeight: 拍照高度
       */

      _options = options;
      if (isMobileTerminal()) {
        initMobileTerminal();
      } else {
        initComputerTerminal();
      }
    },
    photo: function () {
      if (isMobileTerminal()) {
        photoMobileTerminal();
      } else {
        photoComputerTerminal();
      }
    }
  };

  let _options = null;

  function initComputerTerminal() {
    let videoDom = document.getElementById(_options.videoID);
    if (!videoDom) {
      alert('Video 控件無(wú)效');
      return;
    }

    let canvasDom = document.getElementById(_options.canvasID);
    if (!canvasDom) {
      alert('Canvas 控件無(wú)效');
      return;
    }
    canvasDom.setAttribute('width', _options.photoWidth + 'px');
    canvasDom.setAttribute('height', _options.photoHeight + 'px');

    let parameters = {
      video: _options.videoEnable ? {
        width: _options.videoWidth,
        height: _options.videoHeight
      } : false,
      audio: _options.audioEnable
    };

    navigator.mediaDevices.getUserMedia(parameters)
      .then(function (MediaStream) {
        video.srcObject = MediaStream;
        video.play();
      }).catch(function (reason) {
        console.log(reason);
        alert(reason);
      });
  }

  function photoComputerTerminal() {
    let videoDom = document.getElementById(_options.videoID);
    if (!videoDom) {
      alert('Video 控件無(wú)效');
      return;
    }


    let canvasDom = document.getElementById(_options.canvasID);
    if (!canvasDom) {
      alert('Canvas 控件無(wú)效');
      return;
    }

    let context = canvasDom.getContext('2d');
    context.drawImage(videoDom, 0, 0, _options.photoWidth, _options.photoHeight);
  }

  function initMobileTerminal() {
    let fileDom = document.getElementById(_options.fileID);
    if (!fileDom) {
      alert('File 控件無(wú)效');
      return;
    }

    fileDom.setAttribute('accept', 'image/*');
    fileDom.setAttribute('capture', 'camera');

    let canvasDom = document.getElementById(_options.canvasID);
    if (!canvasDom) {
      alert('Canvas 控件無(wú)效');
      return;
    }

    canvasDom.setAttribute('width', _options.photoWidth + 'px');
    canvasDom.setAttribute('height', _options.photoHeight + 'px');

    let imageDom = document.getElementById(_options.imageID);
    if (!imageDom) {
      alert('Image 控件無(wú)效');
      return;
    }

    fileDom.addEventListener('change', function () {
      let file = fileDom.files[0];
      let reader = new FileReader();
      reader.onloadend = function () {
        imageDom.setAttribute('src', reader.result);

        setTimeout(function () {
          let context = canvas.getContext("2d");
          context.drawImage(imageDom, 0, 0, _options.photoWidth, _options.photoHeight);
        }, 300);
      };
      reader.readAsDataURL(file);
    });
  }

  function photoMobileTerminal() {
    let fileDom = document.getElementById(_options.fileID);
    fileDom.click();
  }

  function isMobileTerminal() {
    if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || /Mobile/.test(navigator.userAgent) || /MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))
      return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);
    return false;
  }
})(window, document);

以上就是js調(diào)用網(wǎng)絡(luò)攝像頭的方法的詳細(xì)內(nèi)容,更多關(guān)于js調(diào)用網(wǎng)絡(luò)攝像頭的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • javascript數(shù)組中的concat方法和splice方法

    javascript數(shù)組中的concat方法和splice方法

    這篇文章主要介紹了javascript數(shù)組中的concat方法和splice方法,concat方法作用合并數(shù)組,可以合并一個(gè)或多個(gè)數(shù)組,會(huì)返回合并數(shù)組之后的數(shù)據(jù),不會(huì)改變?cè)瓉?lái)的數(shù)組,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-03-03
  • webpack 5 mode的作用和區(qū)別解析

    webpack 5 mode的作用和區(qū)別解析

    Webpack 5 是一款強(qiáng)大的模塊打包工具,可用于將許多分散的模塊按照依賴(lài)關(guān)系打包成一個(gè)(或多個(gè))bundle,這篇文章給大家介紹webpack 5 mode的作用和區(qū)別解析,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • 利用NodeJS和PhantomJS抓取網(wǎng)站頁(yè)面信息以及網(wǎng)站截圖

    利用NodeJS和PhantomJS抓取網(wǎng)站頁(yè)面信息以及網(wǎng)站截圖

    這篇文章主要介紹了利用NodeJS和PhantomJS抓取網(wǎng)站頁(yè)面信息以及網(wǎng)站截圖的方法,提供實(shí)例代碼供大家參考
    2013-11-11
  • 詳解JavaScript如何設(shè)置私有屬性

    詳解JavaScript如何設(shè)置私有屬性

    這篇文章主要為大家詳細(xì)介紹了在JavaScript中如何設(shè)置私有屬性,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-03-03
  • 一個(gè)效果寫(xiě)的HashTable代碼

    一個(gè)效果寫(xiě)的HashTable代碼

    一個(gè)效果寫(xiě)的HashTable代碼...
    2007-03-03
  • 原生JS實(shí)現(xiàn)動(dòng)態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法

    原生JS實(shí)現(xiàn)動(dòng)態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法

    這篇文章主要介紹了原生JS實(shí)現(xiàn)動(dòng)態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法,涉及javascript動(dòng)態(tài)創(chuàng)建頁(yè)面元素、事件監(jiān)聽(tīng)、回調(diào)函數(shù)使用等相關(guān)操作技巧,需要的朋友可以參考下
    2018-09-09
  • 一篇文章讓你搞懂JavaScript 原型和原型鏈

    一篇文章讓你搞懂JavaScript 原型和原型鏈

    這篇文章主要介紹了一篇文章讓你搞懂JavaScript 原型和原型鏈,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-11-11
  • JavaScript實(shí)現(xiàn)拖拽盒子效果

    JavaScript實(shí)現(xiàn)拖拽盒子效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)拖拽盒子效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 一文總結(jié)JavaScript中常見(jiàn)的設(shè)計(jì)模式

    一文總結(jié)JavaScript中常見(jiàn)的設(shè)計(jì)模式

    在程序設(shè)計(jì)中有很多實(shí)用的設(shè)計(jì)模式,而其中大部分語(yǔ)言的實(shí)現(xiàn)都是基于“類(lèi)”。在程序設(shè)計(jì)中有很多實(shí)用的設(shè)計(jì)模式,而其中大部分語(yǔ)言的實(shí)現(xiàn)都是基于“類(lèi)”。,本文將總結(jié)了JavaScript中常見(jiàn)的十五種設(shè)計(jì)模式,感興趣的朋友可以參考下
    2023-05-05
  • JavaScript中一個(gè)奇葩的IE瀏覽器判斷方法

    JavaScript中一個(gè)奇葩的IE瀏覽器判斷方法

    在寫(xiě)原生的Javascript的時(shí)候,因?yàn)镮E的JS引擎與標(biāo)準(zhǔn)瀏覽器的JS引擎之間總有那么些差異,所以經(jīng)常會(huì)去判斷是否是IE瀏覽器
    2014-04-04

最新評(píng)論

翁源县| 咸阳市| 博爱县| 玉门市| 车险| 余庆县| 大方县| 马鞍山市| 普安县| 东乡族自治县| 调兵山市| 海晏县| 天气| 吴江市| 监利县| 麟游县| 大理市| 石景山区| 昌黎县| 运城市| 拜泉县| 讷河市| 文安县| 土默特右旗| 于都县| 泗水县| 龙海市| 双辽市| 渭南市| 梁平县| 中山市| 沛县| 霸州市| 卓尼县| 象州县| 苏州市| 永善县| 定边县| 茶陵县| 商都县| 临澧县|