js实现截屏

前言:借助html2canvas实现

1.html部分

需要截屏的容器
<div class="js-capture hide"></>

截屏生成的图片存放的位置,注意:img没有src的时候不要写src属性,不然会重新刷新页面
<img alt="" class="js-Base64Img hide">

js部分
function generatePicture(cb) {
 图片是一祯一祯加载的,为了确保图片加载完再截屏,放在延时加载器里
 setTimeout(() => {
    getBase64($('.js-capture')[0], function(data) {
      $('.js-Base64Img').attr('src', data);
      if (cb) {
        cb();
      }
    });
  }, 1000);
}

ready是所以资源加载完毕之后才执行
$(() => {
 截屏之前把截屏区域显示,隐藏状态下不可截屏
 $('.js-capture').removeClass('hide');
  generatePicture(() => {
  截屏之后把截屏区域给隐藏掉
  $('.js-capture').addClass('hide');
    $('.js-Base64Img').removeClass('hide');
  });
})

3.截屏相关

注意点:背景图片某些手机无法截屏,截屏区域中的图片不能跨越,不同机型识别二维码的能力不同,要想全部识别,设计设计页面应当简单

import html2canvas from 'html2canvas';

function DPR() {
  if (window.devicePixelRatio && window.devicePixelRatio > 1) {
    return window.devicePixelRatio;
  }
  return 1;
}

function parseValue(value) {
  return parseInt(value, 10);
}

export default function getBase64(el, callback) {
  const dom = el;
  const box = window.getComputedStyle(dom);
  const width = parseValue(box.width);
  const height = parseValue(box.height);
  const scaleBy = DPR();
  const canvas = document.createElement('canvas');
  canvas.width = width * scaleBy;
  canvas.height = height * scaleBy;
  canvas.style.width = `${width}px`;
  canvas.style.height = `${height}px`;
  const context = canvas.getContext('2d');
  context.scale(scaleBy, scaleBy);
  html2canvas(dom, {
    canvas,
  }).then(c => {
    把canvas转位base64
    callback(c.toDataURL('image/png') || '');
  });

新颖网络截屏插件是一款能够非常方便的将屏幕截屏图片发送到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 联系邮箱:1085617561@qq.com 联系QQ:1085617561
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值