登录你的账户访问不同特色

忘记了您的密码?

忘记你的详情?

哈哈,等等,我现在记起来了!

筑云科技(BIMCC)

筑云科技(BIMCC)

多年项目历练,超大型项目实施经验,以人才和技术为基础,创造最佳产品和服务。

座机:023-68682379(工作日9:00-18:00请致电)
手机:18584713100(非工作时间请致电)

邮箱: info@bimcc.com

重庆市筑云科技有限责任公司
重庆市江北区南桥寺永辉总部大厦7楼

  • 首页
  • 技术服务
  • 产品与下载
    • 飞椽云零代码开发平台
    • BIMCC数字建造平台
    • BIMVR虚拟现实系统(Fuzor)
    • BIM集成运维系统
    • BIM全息投影系统
    • BIMVR3D大屏投影系统
  • BIM智慧工地
  • BIM教育培训
    • AIOB互动教学系统
    • AIOB教学资源建设
    • BIM与虚拟仿真实训室建设
    • 培训与考试
  • 资讯中心
    • 公司动态
    • 技术实践
      • 筑“见”-项目案例
      • 飞椽云
      • 数字建造平台
      • 技术分享
    • 行业资讯
  • 筑云学院
  • 关于我们
    • 公司简介
    • 公司业绩
    • 联系我们
    • 加入我们
点击咨询
  • 首页
  • 公司动态
  • 技术实践
  • 技术分享
  • 前端截图功能实现
2025年7月1日

前端截图功能实现

前端截图功能实现

作者: admin / 星期三, 21 6月 2023 / 发布在 技术分享, 技术实践

随着前端的发展,用户在web页面也能获得更好的体验,相对来说对页面及功能的要求也越来越高,前端能带给用户更多更好的体验,这次我们就来介绍两款前端网页截图工具库。

【01】dom-to-image

​ 1、dom-to-image:dom-to-image是一个JavaScript库,可以将DOM元素转换为可下载的图像,包括PNG和JPEG格式。它可以生成静态图像,也可以包含动态内容。这个库的优点是它可以直接处理DOM元素,而不需要使用canvas或其他复杂的API。它还提供了一些选项,例如可以指定要捕获的DOM元素,指定输出图像的大小,以及可以自定义样式等。

【02】html2canvas

2、html2canvas: html2canvas是一个开源的JavaScript库,可以将网页中的HTML元素转换为canvas图像。它可以将整个网页或指定的HTML元素转换为canvas图像,包括动态内容,并支持跨域使用。除了支持常见的图像格式,如PNG和JPEG,还支持将导出的图像附加到PDF中。这个库最常用于网页截图、生成报告和生成可打印的PDF文件等场景。该库也有一些选项可供配置,例如可以指定要捕获的HTML元素,指定输出图像的大小和质量,以及可以自定义样式等。

 

功能对比

以上两个开源库都能对网页进行截图(实际上是dom元素的渲染)

不同的是html2canvas顾名思义会转换成canvas绘制后再生成图片,而dom-to-image则是直接获取dom元素进行渲染生成图片。

性能

在分别的三次生成中,利用console.timeEnd() 对页面进行截图操作

dom-to-image所需时间大大低于html2canvas

分别为default: 3809.0439453125 ms,default: 3722.1869563250 ms,default: 3797.3568748504 ms

而html2canvas三次所需时间为default: 9278.0821561227 ms,default: 9509.1520286345 ms,fault: 9421.8765951254 ms。

附上代码:

import axios from 'axios';
import domtoimage from 'dom-to-image'  
base64ToFile(base64, fileName) {
    // 将base64按照 , 进行分割 将前缀  与后续内容分隔开
    let data = base64.split(',');
    // 利用正则表达式 从前缀中获取图片的类型信息(image/png、image/jpeg、image/webp等)
    let type = data[0].match(/:(.*?);/)[1];
    // 从图片的类型信息中 获取具体的文件格式后缀(png、jpeg、webp)
    let suffix = type.split('/')[1];
    // 使用atob()对base64数据进行解码  结果是一个文件数据流 以字符串的格式输出
    const bstr = window.atob(data[1]);
    // 获取解码结果字符串的长度
    let n = bstr.length
    // 根据解码结果字符串的长度创建一个等长的整形数字数组
    // 但在创建时 所有元素初始值都为 0
    const u8arr = new Uint8Array(n)
    // 将整形数组的每个元素填充为解码结果字符串对应位置字符的UTF-16 编码单元
    while (n--) {
        // charCodeAt():获取给定索引处字符对应的 UTF-16 代码单元
        u8arr[n] = bstr.charCodeAt(n)
    }
    // 利用构造函数创建File文件对象
    // new File(bits, name, options)
    const file =  new File([u8arr], `${fileName}.${suffix}`, {
        type: type
    })
    // 将File文件对象返回给方法的调用者
    return file;
}
domtoimage.toPng('dom元素').then( imgPath => {
    //添加请求头
    var formData = new FormData();
    // form data 添加file 参数
    formData.append("file", this.base64ToFile(imgPath, '页面截图'));
    let config = {
        headers: { "Content-Type": "multipart/form-data" }
    };
    axios.post(`图片上传url`, formData, config).then((res) => {
        if(res.status === 200 && res?.data?.data) {
        } else {
            this.$message.error('保存封面图片错误!')
        }
    })
}).catch( (error)=> {
    console.error('截图出错了!', error);
});


 
0

关于 admin

您可以读下面的

【技术分享】基于Dynamo的Tekla模型轻量化处理
地下2400米,看见BIM数字建造之光
阿里图标自动化更新方案

最新文章

  • 智能引擎 创新未来—重庆造价协会工程建设领域AI技术应用实践培训班圆满收官

    2024年7月5日,重庆市建设工程造价管理协会主办,重庆市筑云科技有限责任公司,国泰新点软件股...
  • 长江上游最大跨度悬索桥合龙|BIM技术赋能复兴长江大桥建设

    4月11日,长江上游最大跨度悬索桥–复兴长江大桥钢箱梁正式合龙!主桥合龙是整个复兴...
  • 喜讯 | 濮阳市第一个BIM施工全过程应用项目荣膺项目管理数字化竞赛一等奖

    近日,由中建协主办的首届项目管理数字化竞赛圆满完成,濮阳医专附属医院项目作为代表云南省建筑业协...
  • BIM赋能文旅云南人的私藏秘境—抚仙湖

    0...
  • 看国内某超大型机场是如何通过创新数字化应用实现超大工程整体管控的

    南宁吴圩国际机场T3航站区及配套设施建设工程——国家“十四五”规划的重大工程,国家面向东盟门户...

近期评论

    分类

    • 公司动态
    • 广深政策
    • 技术分享
    • 技术实践
    • 数字建造平台
    • 筑“见”-项目案例
    • 行业资讯
    • 飞椽云
    • 技术服务
      • BIM技术服务-基础服务
      • BIM专项技术服务
      • BIM技术服务-拓展服务
    • 筑云产品
      • 飞椽云零代码开发平台
      • BIMCC数字建造平台
      • BIMVR虚拟现实系统(Fuzor)
      • BIM软硬件整体解决方案
      • BIM集成运维系统
      • BIM智慧工地
    • 资讯中心
      • 公司动态
      • 技术实践
        • 筑“见”-项目案例
        • 飞椽云
        • 数字建造平台
        • 技术分享
      • 行业资讯
    • BIM教育培训
    • 关于我们
      • 公司业绩
      • 加入我们
      • 公司简介
      • 联系我们

    联系方式

    座机: 023-68682379(工作日9:00-18:00请致电)
    手机: 18584713100 (非工作时间请致电)
    重庆市江北区南桥寺永辉总部大厦7楼
    北京市丰台区诺德中心二期11号楼2103
    广东省深圳市宝安区福永意库13栋207
    浙江省杭州市临平区南苑发展大厦601-22

    • 社交网络
    筑云科技(BIMCC)

    © 2021 All rights reserved. 重庆市筑云科技有限责任公司.
    渝ICP备13004974号-2

    顶部