谷歌使用navigator.mediaDevices.getUserMedia 調用攝像頭拍照功能,不兼容IE


<template>
    <div>
      <!--canvas截取流-->
      <canvas ref="canvas" width="320" height="260"></canvas>
      <!--圖片展示-->
      <video ref="video" width="340" height="280" autoplay></video>
      <!--確認-->
      <el-button size="mini" type="primary" @click="photograph">拍照</el-button>
    </div>
  </template>   
  <script>
  export default {
    created() {
      this.callCamera()
    },
    data() {
      return {
        // headImgSrc: require('../assets/image/shou.png')
      }
    },
  
    methods: {
      // 調用攝像頭
      callCamera() {
        // H5調用電腦攝像頭API
        navigator.mediaDevices
          .getUserMedia({
            video: true
          })
          .then(success => {
            // 攝像頭開啟成功
            this.$refs['video'].srcObject = success
            // 實時拍照效果
            this.$refs['video'].play()
          })
          .catch(error => {
            console.error('攝像頭開啟失敗,請檢查攝像頭是否可用!')
          })
      },
      // 拍照
      photograph() {
        let ctx = this.$refs['canvas'].getContext('2d')
        // 把當前視頻幀內容渲染到canvas上
        ctx.drawImage(this.$refs['video'], 0, 0, 340, 280)
        // 轉base64格式、圖片格式轉換、圖片質量壓縮
        let imgBase64 = this.$refs['canvas'].toDataURL('image/jpeg', 0.7) // 由字節轉換為KB 判斷大小
  
        let str = imgBase64.replace('data:image/jpeg;base64,', '')
        let strLength = str.length
        let fileLength = parseInt(strLength - (strLength / 8) * 2) // 圖片尺寸  用於判斷
        let size = (fileLength / 1024).toFixed(2)
        console.log(size) // 上傳拍照信息  調用接口上傳圖片 .........
  
        // 保存到本地
        // let ADOM = document.createElement('a')
        // ADOM.href = this.headImgSrc
        // ADOM.download = new Date().getTime() + '.jpeg'
        // ADOM.click()
      },
      // 關閉攝像頭
      closeCamera() {
        if (!this.$refs['video'].srcObject) return
        let stream = this.$refs['video'].srcObject
        let tracks = stream.getTracks()
        tracks.forEach(track => {
          track.stop()
        })
        this.$refs['video'].srcObject = null
      }
    }
  }
  </script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM