老版本浏览器调用本地摄像头拍照

// html
<video autoplay playsinline id="video" width="400"></video>
<canvas id="canvas" width="400" height="300" style="display: none;"></canvas>

// js
  var video = $("#video")[0];
  var deviceId; // 摄像头id
  var constraints = {
    audio: false,
    video: {
      mandatory : {
        // minWidth: 400,
        // minHeight: 480
      }
    },
  };
    // 开启摄像头
    turnOnTheCamera(){
      try {
        navigator.mediaDevices.enumerateDevices().then(function (devices) {
          devices.forEach(function (device) {
            if (device.kind === "videoinput" && device.label == 'Integrated Webcam (0bda:568c)') {
              deviceId = device.deviceId;
            }
          });
          if (deviceId) {
            constraints.video.mandatory.sourceId = deviceId;
            navigator.webkitGetUserMedia(
              constraints,
              function (MediaStream) {
                // console.log("MediaStream:",MediaStream)
                video.src = URL.createObjectURL(MediaStream);
                video.onerror = function (err) {
                  console.log("打开摄像头发生错误:", err);
                };
                MediaStream.onended = function noStream(err) {
                  console.log("MediaStream.onended error:", err);
                };
                video.onloadedmetadata = function (res) {
                  console.log("摄像头成功打!");
                };
                console.log("video:", video)
              },
              function (err) {
                console.log(err);
              }
            );
          }
        });
      } catch (error) {
        console.log(error);
      }
    },
    // 拍照
    takePhotos(){
      if (deviceId){
        var srcVideo = $("#video")[0];
        var canvas = document.getElementById('canvas');
        // 通过设置canvas的宽高比可以调整生成的图片的分辨率
        canvas.width = canvasSize.width; // 相机分辨率/2
        canvas.height = canvasSize.height; // 相机分辨率/2
        //获取 `canvas`元素,根据`srcVideo`中的数据进行图片绘制 `ctx.drawImage()`;
        var ctx = canvas.getContext('2d');
        ctx.drawImage(srcVideo, 0, 0, canvas.width, canvas.height);
        //将 `canvas`绘制的图片信息,展示在 `img`标签中;
        var src=canvas.toDataURL();
        // <img :src="src" />
      }else{
        
      }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值