(前端)页面截取生成图片 html2canvas

7 篇文章 0 订阅
2 篇文章 0 订阅

1. 封装一个公共的截图函数

import html2canvas from 'html2canvas'

/**
 * 截屏函数
 * @param id 需要截取的dom元素id
 * @param name 下载的图片名称
 * @param isReturn 是否返回截取的图片,用作回显
 */
export const screenshot = (id: any, name: any, isReturn?: boolean) => { 
  const dom = document.getElementById(id)
  const screenshotCanvas: any = document.getElementById('screenshotCanvas')
  if (!dom || !screenshotCanvas) return
  const w = dom.offsetWidth
  const h = dom.offsetHeight
  
  screenshotCanvas.width = w * 2
  screenshotCanvas.height = h * 2
  const opts: any = {
    canvas: screenshotCanvas, // 自定义 canvas
    width: w, // dom 原始宽度
    height: h,
    backgroundColor: 'rgba(6, 8, 16)',
    useCORS: true // 【重要】开启跨域配置
  }
  html2canvas(dom, opts).then((canvas: any) => {
    if(IEVersion()) { // ie浏览器处理
      var blob = canvas.msToBlob();
      navigator.msSaveBlob(blob, `${name}.png`);
      return;
    }
    const dataURL = canvas.toDataURL('image/png')
    if (isReturn) {
      console.log(dataURL);
      return dataURL
    } else {
      const a = document.createElement('a') // 生成一个a元素
      a.download = name // 设置图片名称
      a.href = dataURL // 将生成的URL设置为a.href属性
      if (myBrowser() === 'FF') { // 火狐浏览器处理
        a.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
        return
      }
      a.click()
    }
  })
}

2. 在最外层dom里放一个隐藏的canvas标签,用于整个项目截图时使用

  <canvas style={{display: 'none'}} id="screenshotCanvas"></canvas>

3. 使用

import { screenshot } from '@/assets/js/public';

const img = screenshot('domId', '图片名', true)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值