从html生成图片并下载------domtoimage

本文介绍dom-to-image插件的基本使用方法,包括下载、引入及主要API使用示例,如生成PNG/JPEG图片、获取SVG数据URL等。同时对比了html2canvas插件,帮助开发者根据实际需求进行选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下载

npm install dom-to-image

二、引入

import domtoimage from 'dom-to-image';

三、domtoimage主要方法

1、生成png图片

var node = document.getElementById('my-node');

domtoimage.toPng(node)
    .then(function (dataUrl) {
        var img = new Image();
        img.src = dataUrl;
        document.body.appendChild(img);
    })
    .catch(function (error) {
        console.error('oops, something went wrong!', error);
    });

2、获取一个PNG图像blob并下载

domtoimage.toBlob(document.getElementById('my-node'))
    .then(function (blob) {
        window.saveAs(blob, 'my-node.png');
    });

3、保存并下载压缩的JPEG图像

domtoimage.toJpeg(document.getElementById('my-node'), { quality: 0.95 })
    .then(function (dataUrl) {
        var link = document.createElement('a');
        link.download = 'my-image-name.jpeg';
        link.href = dataUrl;
        link.click();
    });

4、获取SVG数据URL,但过滤掉所有<i>元素

function filter (node) {
    return (node.tagName !== 'i');
}

domtoimage.toSvg(document.getElementById('my-node'), {filter: filter})
    .then(function (dataUrl) {
        /* do something */
    });

5、以Uint8Array的形式获取原始像素数据 ,每4个数组元素代表一个像素的RGBA数据

var node = document.getElementById('my-node');

domtoimage.toPixelData(node)
    .then(function (pixels) {
        for (var y = 0; y < node.scrollHeight; ++y) {
          for (var x = 0; x < node.scrollWidth; ++x) {
            pixelAtXYOffset = (4 * y * node.scrollHeight) + (4 * x);
            /* pixelAtXY is a Uint8Array[4] containing RGBA values of the pixel at (x, y) in the range 0..255 */
            pixelAtXY = pixels.slice(pixelAtXYOffset, pixelAtXYOffset + 4);
          }
        }
    });

四、渲染选项

filter

  • 以DOM节点为参数的函数。如果传递的节点应包含在输出中,则应返回true(不包括节点意味着也排除其子代)。在根节点上未调用。
bgcolor
  • 背景颜色的字符串值,任何有效的CSS颜色值。

height, width

  • 渲染前要应用于节点的高度和宽度(以像素为单位)。

style

  • 一个对象,其属性将在呈现之前复制到节点的样式。您可能要检查此参考 中CSS属性的JavaScript名称。

quality

  • 0到1之间的数字表示JPEG图像的图像质量(例如0.92 => 92%)。默认为1.0(100%)

cacheBust

  • 设置为true会将当前时间作为查询字符串附加到URL请求以启用缓存清除。默认为false

imagePlaceholder

  • 在获取图像时将使用的占位符图像的数据URL失败。默认为未定义,将在失败的图像上引发错误

五、浏览器兼容

IE、Safari不支持

六、其他

相似功能的有html2canvas,但是这个插件对于某些css不支持,可根据需求自行选择

dom-to-image

html2canvas

### 使用 `dom-to-image` 库将 DOM 节点转换为图像 #### 导入库文件 为了能够使用 `dom-to-image` 功能,首先需要引入必要的 JavaScript 文件。可以通过 CDN 方式加载这些资源: ```html <script src="https://cdn.jsdelivr.net/npm/dom-to-image@2.6.0/dist/dom-to-image.min.js"></script> <!-- 如果想要实现图片压缩 --> <script src="https://cdn.staticfile.org/pako/1.0.5/pako.min.js"></script> <script src="https://cdn.staticfile.org/upng-js/2.1.0/UPNG.min.js"></script> <!-- 对于保存文件功能的支持 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script> ``` #### 基本用法:生成 PNG 图片显示在页面上 下面这段代码展示了如何获取指定 ID 的 HTML 元素,将其渲染为一张 PNG 格式的图片,在浏览器中展示出来。 ```javascript var element = document.getElementById('example'); // 获取目标 div 或其他容器元素 domtoimage.toPng(element).then(function(dataUrl){ var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }).catch(function(error){ console.error('发生错误:', error); }); ``` #### 高级操作:创建可下载链接或将图片另存为... 如果希望用户可以直接点击按钮来触发导出图片的操作,则可以这样做: ```javascript document.querySelector('#exportButton').addEventListener('click', function(){ domtoimage.toBlob(document.getElementById('content')).then(function(blob){ saveAs(blob, "screenshot.png"); }).catch(function(err){ alert("截图失败:" + err.message); }); }); ``` 以上就是利用 `dom-to-image` 进行简单和复杂场景下 DOM 到图像转化的方法[^1]。对于更复杂的配置选项以及 API 参数设置,请参阅官方文档以获得最新最全的信息[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值