VueJs用H5原生接口getUserMedia调起摄像头拍照

VueJs调用本地摄像头拍照,保存视频

使用H5原生接口获取视频流,短暂延迟后拍照

在VueJs框架下,利用H5原生接口navigator.mediaDevices.getUserMedia调起摄像头,保存视频和图片

<template>
	<div><button @click="getSnap"></div>
</template>
<script>
export default{
  name: 'Snap',
  data() {
  	width: 640,
  	height: 480,
  },
  methods: {
    getSnap() {
      let video = document.createElement('video');
      video.width = this.width;
      video.height = this.height;
      let canvas= document.createElement('canvas');
      canvas.width = this.width;
      canvas.height = this.height;
      let context = canvas.getContext('2d');
      
      let constains = {
        video: true
      }
      navigator.mediaDevices.getUserMedia(constains )
        .then(async (stream) => {
          video.srcObject = stream;
          video.play();
          // 这里拍照的时候需要延时,等待视频加载播放,否则拿到空base64数据
          setTimeout(() => {
            context.drawImage(video, 0, 0, this.width, this.height);
            let image = canvas.toDataURL('image/jpeg');
            image = image.split(image.indexOf(',')+1);
            await FileUtils.saveImg('D:/snap.jpeg', image);
            // 停止视频流,释放摄像头
            stream.stop();
            video = null;
            canvas = null;
            context = null;
            image = null;
          }, 3000);
        }).catch((error) => {
          console.log(error.code, error.message, error);
        });
    }
  },
}
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值