如何使用html2Canvas自动下载截图

Pho*_*nix 2 javascript html2canvas

我有一个显示图形的画布,我正在尝试使用 html2canvas() 和以下代码截取画布的屏幕截图:

<div class="chartContainer" id="chart1"></div>
<div id="displayCanvas" style="display:none;" class="stx-dialog"></div>

html2canvas($('#chart1'),{onrendered:function(canvas1) 
{$('#displayCanvas').append(canvas1)}});
Run Code Online (Sandbox Code Playgroud)

在这里,当图表容器被加载时,它使用 id 为“displayCanvas”的 div 并附加画布的屏幕截图。

如何下载显示的画布的屏幕截图? 我已经尝试使用类似下面的东西来下载图像:

var link = document.createElement('a');
link.download = stx.chart.symbol+".png";
link.href = stx.chart.canvas.toDataURL("png");
link.click();
Run Code Online (Sandbox Code Playgroud)

但它只将画布上的数据下载为没有背景的图像(它不下载屏幕截图而只下载数据),下载后打开时会显示黑屏,其中包含数据。任何人都可以帮助我如何直接下载从 html2Canvas() 截取的屏幕截图的图像吗?

Lud*_*fyn 8

尝试这个:

在 HTML 中:

  1. 给你想要截图的元素一个“捕获”的ID。
  2. 为您需要单击以获取屏幕截图的按钮/元素提供 ID“btn”。
  3. 加载html2canvas.min.js文件。

在 JavaScript 中:

  1. 创建capture()函数。
  2. capture()函数绑定到 btnclick事件。
  3. 完毕!当您点击 btn 时,观看奇迹发生。

HTML:

<h1 id="capture">Hellooooo</h1>
<button id="btn">Capture</button>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

Javascript:

function capture() {
    const captureElement = document.querySelector('#capture')
    html2canvas(captureElement)
        .then(canvas => {
            canvas.style.display = 'none'
            document.body.appendChild(canvas)
            return canvas
        })
        .then(canvas => {
            const image = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream')
            const a = document.createElement('a')
            a.setAttribute('download', 'my-image.png')
            a.setAttribute('href', image)
            a.click()
            canvas.remove()
        })
}

const btn = document.querySelector('#btn')
btn.addEventListener('click', capture)
Run Code Online (Sandbox Code Playgroud)

这是 JSFiddle

快速提示:如果您想捕获整个文档/网页,只需在<body>标签中添加“捕获”ID 。


小智 0

如果图像上有黑色背景,则您的图表必须在屏幕上可见。因为html2canvas就像截图一样。如果要将数据转换为画布,则必须确保数据显示在屏幕中。