截屏插件 js-web-screen-shot(Vue 、html)

最近有个需求是需要再页面上截屏并上传的,于是找到了这个插件【js-web-screen-shot

vue中使用该插件来截屏

先在package.json中添加这个

    "js-web-screen-shot": "^1.8.6"

然后 npm install

然后在对应页面的vue文件的 script 中 import

import ScreenShort from 'js-web-screen-shot'

接下就可以使用了;
使用方式大概就是 定义一个按钮,来触发构建该插件对象(也可以用其他方式)
然后就截图,截图完成后插件会调用完成的回调方法,该回调方法会将截图的图片base64传进来,然后拿到这个base64就可以进行自己的处理逻辑了。

 <button @click="btnClick()" style="margin-left: 5px">点击开始截图</button>

methods 里面定义以下方法

// 按钮点击时间方法,构建插件对象
 btnClick() {
 // 更多参数 和使用可以看它包里面的README.md文件
      const screenShotHandler = new ScreenShort({
        // 是否启用webrtc,值为boolean类型,值为false则使用html2canvas来截图
        enableWebRtc: false,
        // 层级级别,这个要比你页面上其他元素的z-index的值大,不然截不了
        level: 2001,
        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') // base64编码的图片
        // 通过atob将base64进行编码
        var bytes = window.atob(url.split(',')[1])
        // 处理异常,将ASCII码小于0的转换为大于0,进行二进制转换
        var buffer = new ArrayBuffer(bytes.length)
        // 生成一个8位数的数组
        var uint = new Uint8Array(buffer)
        for (var j = 0; j < bytes.length; j++) {
          uint[j] = bytes.charCodeAt(j)// 根据长度返回相对应的Unicode 编码
        }
        // Blob对象  // type 为图片的格式
        var imageFile = new Blob([buffer], { type: 'image/jpeg' })
        const formData = new FormData()
        // 上传的参数名是file,数据是该图片的blob对象,文件名是当前时间戳.jpeg;
        //如果不指定第三个参数文件名,那么默认文件名就是blob,没有后缀,后端的上传接口如果要截取文件名的话会出问题
        formData.append('file', imageFile, Date.now() + '.jpeg')
        // 我这儿是上传到某个地方了,上传地址是在data中定义的uploadRequestUrl
        axios.post(this.uploadRequestUrl, formData, {
          'Content-type' : 'multipart/form-data'
        }).then((res) => {
          // 上传成功的处理
        }).catch(e => {
          errorMsg('截图上传失败')
        })
      }
    },
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() {
      // 取消截图的回调
    }

普通html中使用该插件来截图

自己又琢磨着想在html中使用这个插件。
要先把这个插件的dist(我这个dist包是直接从vue的node_modules中复制过来的)包下载下来放到项目中去,如下图
在这里插入图片描述
上图中的这个,也是定义插件对象,其中的宽高是截屏时那个画布的宽高,表示最大能截屏的区域大小

function btn(){
   new screenShotPlugin({enableWebRtc: false, level: 2001, 
   canvasWidth : 1200, canvasHeight : 1200,
   completeCallback: callback,closeCallback: closeFn});
        }

这个值我开始没指定,然后截屏的大小就只有那个按钮那么小,没法全屏;
后面指定了这2个值的大小,就只能截这个大小的区域,也不是全屏;

后面看了 作者的博客 ,才反映过来,窝草,为啥要自己去琢磨啊,人家有demo啊。
从这个 html的demo地址 下载下来,解压,放到项目里面,按照deml.html就ok了。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
新颖网络截屏插件是一款能够非常方便的将屏幕截屏图片发送到WEB服务器中的轻量级ActiveX控件,它可以非常方便的集成到您的博客,BBS,论坛,OA,或电子商务网站中,带给用户前所未有的用户体验。 同时新颖网络提供了ASP.NET(C#)和PHP的开发文档,和完善的ActiveX接口,您可以非常容易的使用和进行二次开发。最新版本的截屏控件极大的优化了图片数据传输的效率,可以帮助用户节省约40%的上传时间。 相信新颖网络WEB截屏控件能够帮助您赢得市场。 产品特点如下: 1. 基于标准HTTP协议。 2. 支持Jpg图片格式。 3. 一流的用户体验,操作方便。 4. 增加截屏图片编辑器。可任意输入文字,绘制矩形箭头等。 5. 免费提供JavaScript SDK包,方便您将插件快速集成到已有网站中。 支持语言:PHP,JSP,ASP,ASP.NET(C#),ASP.NET(VB),C++,VC,VC.NET,VB,VB.NET,C#,C#.NET,Delphi,C++Builder 支持平台:Visual Studio 6.0/2002/2003/2005/2008/2010,C++ Builder 6.0/2009/2010,Delphi 7/2009,Visual Basic 6.0/2008 支持脚本:JavaScript,VBScript 支持系统:Windows NT,Windows 2003,Windows XP,Windows Vista,Windows 7,Linux 支持图片格式:PNG 产品介绍:http://www.cnblogs.com/xproer/archive/2010/08/09/1796077.html 在线演示-标准版:http://www.ncmem.com/products/screencapture/demo/index.html 在线演示-专业版:http://www.ncmem.com/products/screencapture/demo2/index.html 在线演示-CKEditor3.6.1:http://www.ncmem.com/products/screencapture/demo-ckeditor361/index_ckeditor361.html 布署文档:http://www.cnblogs.com/xproer/archive/2011/09/14/2176188.html 升级日志:http://www.cnblogs.com/xproer/archive/2010/12/04/1896399.html 开发文档-ASP.NET(C#):http://www.cnblogs.com/xproer/archive/2010/12/04/1896552.html 开发文档-PHP:http://www.cnblogs.com/xproer/archive/2011/05/16/2047915.html 开发文档-JSP:http://www.cnblogs.com/xproer/archive/2011/05/20/2051862.html 示例下载-标准版:http://www.ncmem.com/download/ScreenCapture-demo.rar 示例下载-专业版:http://www.ncmem.com/download/ScreenCapturePro-demo.rar 文档下载:http://www.ncmem.com/download/ScreenCapture-doc.rar VC运行库:http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf 联系邮箱:[email protected] 联系QQ:1085617561

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值