• 【技术】烦死了,HTML 怎么转图片?


    前言

    在用某讯浏览器时,发现遇到自己喜欢的网站除了可以网页另存为,还可以将网页保存为图片,这功能还是很不错的。Echarts 图表也提供了将图表转换为图片的功能。

    近期遇到了同样的需求,领导要求每天汇报工作,工作都是通过系统统计为表格,需要截图,可是因为数据较多,图片不能一下子截全,于是迸发了这样的想法,将表格直接转换为图片

    下载脚本

    本着效率的原则,决定借助互联网大法,最终选择了 HTML2CANVAS ,它是一个 JS 脚本,封装了 Canvas 组件。这个脚本在 GitHub 上进行了托管。

    HTML2CANVAS 官网 下载脚本,导入到项目中。

    官方提供了三种方式:

    • Install NPM

      npm install --save html2canvas
      
      • 1
    • Install Yarn

      yarn add html2canvas
      
      • 1
    • 脚本导入

      http://html2canvas.hertzen.com/dist/html2canvas.min.js
      
      • 1

    官网案例

    • 准备要转换为图片的HTML代码
    <div id="capture" style="padding: 10px; background: #f5da55">
        <h4 style="color: #000; ">Hello world!h4>
    div>
    
    • 1
    • 2
    • 3
    • 编写 JS 脚本
    // html2canvas(element, options);
    html2canvas(document.querySelector("#capture")).then(function(canvas) {
        document.body.appendChild(canvas);
    });
    
    • 1
    • 2
    • 3
    • 4

    调用 html2canvas 方法,方法有两个参数。执行函数中有一个参数canvas组件,将该组件直接添加到 body 中,当然也可以根据实际需求放到指定的元素中,例如:模态框等。

    ​ 参数一:元素对象,要转换为图片的元素对象;

    ​ 参数二:配置项

    参数默认值描述
    allowTaintfalse是否允许跨域图像污染画布
    backgroundColor#ffffff画布背景色(如果未在 DOM 中指定)。设置 null 为透明。
    canvasnull在指定 canvas 元素中绘图,不是用默认 canvas
    foreignObjectRenderingfalse如果浏览器支持,是否使用外来对象呈现
    imageTimeout15000加载图像超时(以毫秒为单位)。设置 0 禁用超时。
    ignoreElements(element) => false从呈现中删除匹配元素。
    loggingtrue启用日志记录以进行调试
    onclonenull在克隆文档以进行呈现时调用的回调函数可用于修改将要呈现的内容,而不会影响原始源文档
    proxynull用于加载跨源映像的代理的 URL。如果留空,则不会加载跨源图像。
    removeContainertrue是否清理 html2 扫描插件临时创建的克隆 DOM 元素
    scalewindow.devicePixelRatio用于渲染的比例。默认为浏览器设备像素比。
    useCORSfalse是否尝试使用 CORS 从服务器加载映像
    widthElement widthcanvas
    heightElement heightcanvas
    xElement x-offset裁剪画布 x 坐标
    yElement y-offset裁剪画布 y 坐标
    scrollXElement scrollX呈现元素时要使用的 x 滚动位置(例如,如果 元素使用position: fixed)
    scrollYElement scrollY呈现元素时要使用的 y 滚动位置(例如,如果 元素使用position: fixed)
    windowWidthWindow.innerWidth呈现时要使用的窗口宽度,这可能会影响媒体查询等内容Element
    windowHeightWindow.innerHeight渲染时要使用的窗口高度,这可能会影响媒体查询等内容Element

    图片模糊

    添加如下配置项:

    html2canvas(document.querySelector("#capture"),{
        scale: 2, // 处理图片模糊问题
    }).then(function(canvas) {
        document.body.appendChild(canvas);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    在idea命令行,or linux 终端执行命令,快速获取通过脚本上证指数、创业板实时行情
    MySQL事务
    Mac安装redis,mysql
    一文了解数据治理全知识体系
    DJYGUI系列文章八:GDD绘图系统
    故障诊断 | GADF+Swin-CNN-GAM 的轴承故障诊断模型附matlab代码
    《Linux下的进程创建》
    ASP.NET LIMS系统全套源码(演示+自主版权+项目使用)
    关于QTableWidget的it所占内存的释放问题
    Windows/Linux(命令、安装包和源码安装)平台各个版本QT详细安装教程
  • 原文地址:https://blog.csdn.net/m0_43453853/article/details/127590128