使用html2canvas保存图像-纯Javascript

使用html2canvas保存图像-纯Javascript,javascript,save,capture,html2canvas,save-as,Javascript,Save,Capture,Html2canvas,Save As,我正在尝试制作一个按钮来捕获并保存我的png页面 现在,我可以用我需要的分辨率复制它,但不是显示它,而是需要显示一个对话框并像“另存为…”一样保存它以重命名文件 function myRenderFunction(canvas) { destination.appendChild(canvas); } var element = document.getElementById('element'); var destination = document.getElementById('de

我正在尝试制作一个按钮来捕获并保存我的png页面

现在,我可以用我需要的分辨率复制它,但不是显示它,而是需要显示一个对话框并像“另存为…”一样保存它以重命名文件

function myRenderFunction(canvas) {
  destination.appendChild(canvas);
}

var element = document.getElementById('element');
var destination = document.getElementById('destination');



html2canvas(element, {
  scale: 3,
    onrendered: myRenderFunction
});

以下是我当前处理的一个示例。

要在本地保存图像,可以将渲染功能更改为以下内容:

function myRenderFunction(canvas){
    var a = document.createElement('a');
    // toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
    a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
    a.download = 'somefilename.jpg';
    a.click();
}

这来自stackoverflow的回答要在本地保存图像,可以将渲染功能更改为以下内容:

function myRenderFunction(canvas){
    var a = document.createElement('a');
    // toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
    a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
    a.download = 'somefilename.jpg';
    a.click();
}

这来自stackoverflow的回答

我指的是“另存为窗口”,用户可以在其中选择捕获的名称和目标。该对话框取决于浏览器。如果在chrome上,您已经在chrome设置中设置了下载文件夹,那么该文件将立即在那里下载,而不显示对话框,否则它将显示对话框。但这完全取决于浏览器。使用javascript下载文件没有其他选择。谢谢,我不知道。它确实能工作,但很奇怪,我不知道为什么我不能用一个按钮来实现它。如果你想用一个按钮就把你的
html2canvas(…
内容包装在
document.querySelector(“#mybutton”).addEventListener('click',()=>{//把你的整个html2canas放在这里});
我的意思是“另存为窗口”用户可以在其中选择捕获的名称和目标。该对话框取决于浏览器。如果在chrome上,您已在chrome设置中设置了下载文件夹,则文件将立即在那里下载,而不显示对话框,否则将显示对话框。但这完全取决于浏览器。没有其他选项可供选择或者用javascript下载文件。谢谢,我不知道。它确实有效,但很奇怪,我不知道为什么我不能用按钮实现。如果你想用按钮实现,只需将你的
html2canvas(…
内容包装在
文档中。querySelector(“#mybutton”)。addEventListener('click',()=>{//把你的整个html2canas放在这里});