国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue調(diào)用電腦端攝像頭實(shí)時拍照

這篇具有很好參考價(jià)值的文章主要介紹了vue調(diào)用電腦端攝像頭實(shí)時拍照。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

需求描述

點(diǎn)擊照相機(jī)拍照,彈出照相機(jī)拍照彈窗,點(diǎn)擊拍照按鈕,截取錄像的幀,點(diǎn)擊保存,提交數(shù)據(jù)給后臺。

功能實(shí)現(xiàn)

1.html模塊

//點(diǎn)擊打開照相機(jī)拍照彈窗
<el-button @click="handleOpen">照相機(jī)拍照</el-button>

//照相機(jī)拍照彈窗
    <div class="public-mask mask-grey-bg" v-show="cameraOpen">
      <div class="mask-main camera-main">
        <div class="mask-title">
          <img src="../assets/images/icon_camera.png" class="title-icon"/>
          <span>照相機(jī)拍照</span>
          <img src="../assets/images/icon_close.png" class="title-close" @click="closeCameraMask"/>
        </div>
        <div class="camera-box">
          <div class="camera-left">
            <!-- 這里就是攝像頭顯示的畫面 -->
            <video id="videoCamera" width="100%" height="100%"></video>
          </div>
          <div class="camera-right">
        
            <div class="camera-img-box">
              <div class="small-img">
               <!-- 這里是點(diǎn)擊拍照顯示的圖片畫面 -->
                <img v-if="imgSrc" :src="imgSrc" style="width: 200px;height: 150px;" />
                <canvas id="canvasCamera" class="canvas" :width='videoWidth' :height='videoHeight' style="display: none;"></canvas>
              </div>
              <div>
              <!-- 點(diǎn)擊拍照和保存按鈕 -->
                <el-button type="primary" class="save-camera-btn" icon="el-icon-camera" @click="drawImage" style="margin-top: 10px;">拍照</el-button>
                <el-button type="primary" class="save-camera-btn" icon="el-icon-check" @click="uploadPicture">保存</el-button>
              </div>
            </div>
            
          </div>
          
        </div>
      </div>
    </div>

2.css模塊
就是一個彈窗,這里就不進(jìn)行展示了。

3.js模塊

export default {
  name: "Index",
  data() {
  	return {
  	  /** 照相機(jī)彈窗模塊-start */
      cameraOpen: false,
      imgSrc: undefined,
      os: false,//控制攝像頭開關(guān)
      thisVideo: null,
      thisContext: null,
      thisCancas: null,
      videoWidth: 800,
      videoHeight: 600,
      /** 照相機(jī)彈窗模塊-end */
  	}
  },
  methods: {
  /** 調(diào)用攝像頭拍照-start*/
  	// 打開照相機(jī)彈窗
  	handleOpen() {
  	  this.cameraOpen = true;
      this.getCompetence();
  	},
    // 調(diào)用攝像頭權(quán)限
    getCompetence() {
      //必須在model中render后才可獲取到dom節(jié)點(diǎn),直接獲取無法獲取到model中的dom節(jié)點(diǎn)
      this.$nextTick(() => {
        const _this = this;
        this.os = false;//切換成關(guān)閉攝像頭
        this.thisCancas = document.getElementById('canvasCamera');//這里是需要截取的canvas的Id名稱
        this.thisContext = this.thisCancas.getContext('2d');
        this.thisVideo = document.getElementById('videoCamera');
        // 舊版本瀏覽器可能根本不支持mediaDevices,我們首先設(shè)置一個空對象
        if (navigator.mediaDevices === undefined) {
          navigator.menavigatordiaDevices = {}
        }
        // 一些瀏覽器實(shí)現(xiàn)了部分mediaDevices,我們不能只分配一個對象
        // 使用getUserMedia,因?yàn)樗鼤采w現(xiàn)有的屬性。
        // 這里,如果缺少getUserMedia屬性,就添加它。
        if (navigator.mediaDevices.getUserMedia === undefined) {
          navigator.mediaDevices.getUserMedia = function (constraints) {
            // 首先獲取現(xiàn)存的getUserMedia(如果存在)
            let getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.getUserMedia;
            // 有些瀏覽器不支持,會返回錯誤信息
            // 保持接口一致
            if (!getUserMedia) {
              return Promise.reject(new Error('getUserMedia is not implemented in this browser'))
            }
            // 否則,使用Promise將調(diào)用包裝到舊的navigator.getUserMedia
            return new Promise(function (resolve, reject) {
              getUserMedia.call(navigator, constraints, resolve, reject)
            })
          }
        }
        const constraints = {
          audio: false,
          video: {width: _this.videoWidth, height: _this.videoHeight, transform: 'scaleX(-1)'}
        };
        navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
          // 舊的瀏覽器可能沒有srcObject
          if ('srcObject' in _this.thisVideo) {
            _this.thisVideo.srcObject = stream
          } else {
            // 避免在新的瀏覽器中使用它,因?yàn)樗诒粭売谩?/span>
            _this.thisVideo.src = window.URL.createObjectURL(stream)
          }
          _this.thisVideo.onloadedmetadata = function (e) {
            _this.thisVideo.play()
          }
        }).catch(err => {
          this.$notify({
            title: '警告',
            message: '沒有開啟攝像頭權(quán)限或?yàn)g覽器版本不兼容.',
            type: 'warning'
          });
        });
      });
    },
    //繪制圖片
    drawImage() {
      // 點(diǎn)擊,canvas畫圖
      this.thisContext.drawImage(this.thisVideo, 0, 0, this.videoWidth, this.videoHeight);
      // 獲取圖片base64鏈接,展示到界面中的也是這個url地址
      this.imgSrc = this.thisCancas.toDataURL('image/png');
    },
    // 上傳照相機(jī)圖片
    uploadPicture() {
      // 這里就調(diào)用上傳圖片接口即可
      ...
    },
    //清空畫布
    clearCanvas(id) {
      let c = document.getElementById(id);
      let cxt = c.getContext("2d");
      cxt.clearRect(0, 0, c.width, c.height);
    },
    //重置畫布
    resetCanvas() {
      this.imgSrc = "";
      this.clearCanvas('canvasCamera');
    },
    //關(guān)閉攝像頭
    stopNavigator() {
      if (this.thisVideo && this.thisVideo !== null) {
        this.thisVideo.srcObject.getTracks()[0].stop();
        this.os = true;//切換成打開攝像頭
      }
    },
    // 關(guān)閉照相機(jī)彈窗
    closeCameraMask() {
      this.cameraOpen = false; // 關(guān)閉照相機(jī)彈窗
      this.resetCanvas(); // 重置畫布
      this.stopNavigator(); // 關(guān)閉攝像頭
      //this.getDetailList(); // 重新獲取一下List,此方法不再書寫
    },
    /** 調(diào)用攝像頭拍照-end*/
  },
}

效果展示

vue調(diào)用攝像頭拍照,vue.js,javascript,前端文章來源地址http://www.zghlxwxcb.cn/news/detail-528511.html

到了這里,關(guān)于vue調(diào)用電腦端攝像頭實(shí)時拍照的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PC端調(diào)用攝像頭拍照(vue)以及解決getUserMedia is not implemented in this browser

    下面這段代碼是在html文件中執(zhí)行調(diào)用攝像頭,然后進(jìn)行拍照的功能,一切都是按照里面的步驟去走的,功能也確實(shí)可以實(shí)現(xiàn),后面的代碼就是 vue 實(shí)現(xiàn)這個功能的邏輯代碼(如果你還直接使用,你就會發(fā)現(xiàn)一個坑爹的問題,請繼續(xù)看下去) html文件內(nèi)容 vue項(xiàng)目中使用(組件),

    2024年02月13日
    瀏覽(19)
  • Java獲取實(shí)時攝像頭進(jìn)行拍照(附源碼)

    Java是一種通用編程語言,可以用來開發(fā)各種類型的應(yīng)用程序,包括涉及圖像處理和相機(jī)操作的應(yīng)用程序。 ????????要在Java中獲取實(shí)時攝像頭進(jìn)行拍照,通常會借助一些 第三方庫或API ,例如 OpenCV(Open Source Computer Vision Library) 或 Java Media Framework(JMF) 等。這些庫和API提

    2024年01月25日
    瀏覽(23)
  • Unity | 如何調(diào)用攝像頭拍照

    Unity | 如何調(diào)用攝像頭拍照

    我只用了PC端,其他平臺我沒試過哈~ 1.常見的輸入內(nèi)容 常見的輸入內(nèi)容:聲音、圖片 (影像就是一連串圖片不停的放,所以攝像頭發(fā)給電腦的實(shí)際上是很多很多圖片) 常見的輸入設(shè)備:輸入聲音對應(yīng)的設(shè)備一般是麥克風(fēng),圖片對應(yīng)的設(shè)備一般設(shè)攝像頭。 2.unity獲取設(shè)備訪問

    2023年04月09日
    瀏覽(29)
  • python調(diào)用攝像頭實(shí)現(xiàn)拍照功能

    python調(diào)用攝像頭實(shí)現(xiàn)拍照功能

    目錄 1.介紹 2.系統(tǒng)依賴 (1)OpenCV-Python庫 (2)Tkinter庫 (3)Pillow庫 (4)Time庫 3.系統(tǒng)代碼 4.效果展示 5.注意事項(xiàng) ? ? ? ? 這是一個有趣的項(xiàng)目,通過Python程序調(diào)用系統(tǒng)的攝像頭,實(shí)現(xiàn)了拍照的功能. ????????我的主頁還有一些文章介紹了其他有趣的項(xiàng)目,可以動手嘗試一下: 代碼寫不完了

    2024年02月04日
    瀏覽(22)
  • Python進(jìn)階,使用 opencv 調(diào)用攝像頭進(jìn)行拍照

    ? ? ? ? ?opencv 支持 Python 版本的模塊叫作 opencv-p hon ,可直接使用 pip install opencv-python 令進(jìn)行安裝,但常常會因?yàn)榫W(wǎng)絡(luò)等問題導(dǎo)致失敗。推薦使用離線模式來安裝 opencv 模塊。 下載完安裝包后,使用如下命令進(jìn)行安裝: D: pip install opencv

    2024年02月11日
    瀏覽(27)
  • Pyqt5打開電腦攝像頭進(jìn)行拍照

    Pyqt5打開電腦攝像頭進(jìn)行拍照

    目錄 1、設(shè)計(jì)UI界面 2、設(shè)計(jì)邏輯代碼,建立連接顯示窗口 3、結(jié)果 1、設(shè)計(jì)UI界面 將ui界面轉(zhuǎn)為py文件后獲得的邏輯代碼為:(文件名為? Camera.py ) 2、設(shè)計(jì)邏輯代碼,建立連接顯示窗口 邏輯代碼如下:(文件名為 Camera_main.py ) 3、結(jié)果 參考:暫未成功人士

    2024年02月12日
    瀏覽(23)
  • Unity3D:調(diào)用安卓攝像頭拍照

    操作步驟:創(chuàng)建腳步并掛載到Main Camera上 仍未解決的問題:導(dǎo)入到安卓平臺測試時,拍照按鈕不能隨著屏幕旋轉(zhuǎn)而變換位置; 拍照時會把拍照按鈕也截進(jìn)去。

    2024年02月06日
    瀏覽(20)
  • opencv在linux上調(diào)用usb攝像頭進(jìn)行拍照

    opencv在linux上調(diào)用usb攝像頭進(jìn)行拍照

    一般video1就是usb攝像頭

    2024年02月06日
    瀏覽(20)
  • uniapp開發(fā)h5或小程序調(diào)用攝像頭拍照,錄屏

    uniapp開發(fā)h5或小程序調(diào)用攝像頭拍照,錄屏

    uniapp開發(fā)h5或小程序調(diào)用攝像頭拍照,錄屏 如圖 注意,小程序上線使用需要配置upload域名。

    2024年02月12日
    瀏覽(59)
  • 使用PYQT5打開電腦攝像頭并進(jìn)行拍照

    使用PYQT5打開電腦攝像頭并進(jìn)行拍照

    目錄 1 UI界面的布局 2 UI界面布局對應(yīng)的代碼 3 打開電腦攝像頭等功能的完整代碼 4 一些代碼函數(shù)和優(yōu)化界面代碼 5 最終效果 下圖是簡單設(shè)計(jì)的一個UI控制的輸出可視化界面。 ? ? ? 其中, 攝像頭圖片顯示 使用的是左邊功能的 label 類、 打開攝像頭拍照關(guān)閉攝像頭導(dǎo)出圖片

    2023年04月21日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包