vue中通过插件实现自定义截屏功能

1、npm安装插件

npm install js-web-screen-shot --save

2、在页面组件中引入

import ScreenShort from "js-web-screen-shot";

3、示例代码

<template>
  <div>
    <button @click="btnClick()">截图</button>
  </div>
</template>
 
<script>
 
 
import ScreenShort from "js-web-screen-shot";
 
export default {
  data(){
    return{
        uploadlist:[],
        imageFilelist:[],
 
    }
  },
  methods:{
    btnClick(){
        const screenShotHandler = new ScreenShort({
            enableWebRtc: false,  //是否显示选项框
            level:99,  //层级级别
            completeCallback: this.callback,
            closeCallback: this.closeFn,
        });
 
    },
 
    callback(base64data) {
        var image = new Image();
        image.src = base64data;
        image.onload = () => {
          var canvas = this.convertImageToCanvas(image);
          var url = canvas.toDataURL("image/jpeg");
          // 在页面展示的数组,次数组是要把截图成功后的图片在页面上展示出来的数组,可以根据自己项目的需求进行添加
          this.uploadlist.push({image:url})
          for(var i=0;i<this.uploadlist.length;i++){
            if(this.uploadlist.length>=6){
              this.uploadhide=false;
            }
          }
          console.log(this.uploadlist,'push')
 
          var bytes = window.atob(url.split(",")[1]);  //通过atob将base64进行编码
          //处理异常,将ASCII码小于0的转换为大于0,进行二进制转换
          var buffer = new ArrayBuffer(bytes.length);
          var uint = new Uint8Array(buffer);  //生成一个8位数的数组
          for (var i = 0; i < bytes.length; i++) {
            uint[i] = bytes.charCodeAt(i);  //根据长度返回相对应的Unicode 编码
          }
          //Blob对象
          var imageFile= new Blob([buffer], { type: "image/jpeg" }); //type为图片的格式
 
          // 给后台返回的数组,我的项目需求是要截图多张上传给后端的,如果只上传一张直接就上传imageFile上一句就行,这个数组可以跟根据自己的需求进行编写
          this.imageFilelist.push(imageFile);
          if (this.imageFilelist != "") {
            console.log("截图成功")
            // this.$message({
            //   type: "success",
            //   message: "截图成功",
            // });
          }
      };  
    },
 
    convertImageToCanvas(image) {
      var canvas = document.createElement("canvas");
      canvas.width = image.width;
      canvas.height = image.height;
      canvas.getContext("2d").drawImage(image, 0, 0);
      return canvas;
    },
 
    closeFn(){
 
    }
  }
}
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值