当前位置:  开发笔记 > 编程语言 > 正文

如何将DOM元素保存/导出到图像?

如何解决《如何将DOM元素保存/导出到图像?》经验,为你挑选了2个好方法。

我有一个网页,其中有一个表单元素(其ID已知),并且在表单内部有多个DIV,并且每个div的位置可能会更改.

我想做的是:

a)保存此表单的当前状态

// var currentForm=document.forms['myFrm'].innerHTML;

可能就够了......

b)将每个DIV的最新位置保存或导出整个表格到图像文件.

//如何保存/导出currentForm的javascript var到图像文件是关键问题.

任何帮助/指针将不胜感激.



1> sym3tri..:

有一个名为Domvas的库可以做你想要的.

它使您能够获取任意DOM内容并将其绘制到您选择的Canvas中.

之后,从canvas元素导出图像应该非常简单:

var canvas = document.getElementById("mycanvas");
var img    = canvas.toDataURL("image/png");
document.write('');


[dom-to-image](https://github.com/tsayen/dom-to-image)是一个基于废弃的domvas的活动项目.

2> orange01..:

经过数小时的研究,我终于找到了一种解决方案,可以对元素进行屏幕截图,即使origin-clean设置了FLAG(以防止XSS),这也是为什么您甚至可以捕获Google Maps的原因。我写了一个通用函数来获取屏幕截图。另外,您唯一需要的就是html2canvas库(https://html2canvas.hertzen.com/)。

例:

getScreenshotOfElement($("div#toBeCaptured").get(0), 0, 0, 100, 100, function(data) {
    // in the data variable there is the base64 image
    // exmaple for displaying the image in an 
    $("img#captured").attr("src", "data:image/png;base64,"+data);
}

请记住console.log()alert()如果图像尺寸很大,则不会生成输出。

功能:

function getScreenshotOfElement(element, posX, posY, width, height, callback) {
    html2canvas(element, {
        onrendered: function (canvas) {
            var context = canvas.getContext('2d');
            var imageData = context.getImageData(posX, posY, width, height).data;
            var outputCanvas = document.createElement('canvas');
            var outputContext = outputCanvas.getContext('2d');
            outputCanvas.width = width;
            outputCanvas.height = height;

            var idata = outputContext.createImageData(width, height);
            idata.data.set(imageData);
            outputContext.putImageData(idata, 0, 0);
            callback(outputCanvas.toDataURL().replace("data:image/png;base64,", ""));
        },
        width: width,
        height: height,
        useCORS: true,
        taintTest: false,
        allowTaint: false
    });
}

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有