vue拍照功能PC+手机需要的可以看一下

项目中需要用到拍照上传头像,从相册中选择,

相册中选择代码一搜一大堆就不讲了,今天主要讲一下在pc与手机上拉起摄像头拍照的功能

我们用到的是2.X的框架,用到了<canvas>和<video>

来讲一下,样式的代码我就不放上来了,主要还是看功能

1.首先是html界面

    <!--开启摄像头-->
    <el-button size="mini"   @click="openPhoto" >摄像头</el-button>
    <!--canvas截取流-->
    <canvas ref="canvas" width="500" height="500"></canvas>
    <!--图片展示-->
    <video ref="video" width="500" height="500" autoplay></video>
    <!--确认-->
    <el-button size="mini"  @click="photograph">拍照</el-button>

2.vue的data中我并没有写任何东西,不过需要的话可以定义一个来接受拍照后的值

3.methods的方法

    // 打开摄像头
    openPhoto() {
      // H5调用电脑摄像头API
      //navigator.mediaDevices.getUserMedia 调用后 会提示用户给予使用媒体输入的许可.返回一个 Promise 对象,
      //成功后会resolve回调一个 MediaStream 对象。
      //在H5设备上面调用摄像头也可以通过此种方式,如下的例子表示优先使用前置摄像头
      //{ audio: true, video: { facingMode: "user" } }前摄像头
      //{ audio: true, video: { facingMode: { exact: "environment" } } }强制使用后置摄像头
      //设置获取接近 1280x720 的相机分辨率
      //{ audio: true, video: { width: 1280, height: 720 } };
      navigator.mediaDevices
          .getUserMedia({
            audio: true, video: { width: 1280, height: 720 }
          })
          .then((success) => {
            // 摄像头开启成功
            this.$refs["video"].srcObject = success; //srcObject 是实时流
            // 实时拍照效果
            this.$refs["video"].play();
          })
          .catch((error) => {
            //摄像头开启失败
            console.error("摄像头开启失败");
          });
    },
    // 拍照
    photograph() {
      let photoInfo= this.$refs["canvas"].getContext("2d");
      // 把当前内容渲染到canvas上
      photoInfo.drawImage(this.$refs["video"], 0, 0, 640, 480);
      //canvas图片 转base64格式、图片格式转换、图片质量压缩
      let imgBase64 = this.$refs["canvas"].toDataURL("image/jpeg", 0.7);
      let string = imgBase64.replace("data:image/jpeg;base64,", "");
      let strLgh = string.length;
      let fileLgh = parseInt(strLgh - (strLgh  / 8) * 2); //
      let size = (fileLgh / 1024).toFixed(2);// 由字节转换为KB 判断大小
      console.log(size); //图片大小
    },

实现以后的功能

所有代码大概就是这样,欢迎补充,如果对您有帮助麻烦点个赞吧谢谢

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值