html2canvas.js不捕获图像为动态生成的内容(html2canvas.js not cap

2019-10-19 19:45发布

我使用vivagraphs生成动态SVG元素,但是当我点击捕捉按钮,没有节点和边缘中。

这是脚本:

$(document).ready(function() {
//var testdiv = document.getElementById("testdiv");
$('#btn').click(function(){
    html2canvas($("#graph1"), {
        onrendered: function(canvas) {
            var myImage = canvas.toDataURL("img/png");
            window.open(myImage);
        }
    });
});

虽然我检查的元件SVG是呈现图形,但快照不包含节点和边后示出。

是否有html2canvas替代或者我可以解决这个问题?

Answer 1:

如果你想将图像从画布到一些图像格式保存在这里是为您提供一些帮助。 希望这将帮助你。

$(document).ready(function() {
$('#btn').click(function(){
    html2canvas(document.getElementById('graph1'), {
            onrendered: function(canvas) {
                var cs = new CanvasSaver('save_img.php',canvas,'myimage')
            }
        });
    });
});

这里CanvasSaver()函数定义在这里,低于该三个参数之一是PHP文件,该方法从图像RAW日期到一些图像格式。 我会写belwo这个脚本部分“save_img.php”的代码并保存该文件在您的根目录下。

function CanvasSaver(url, cnvs, fname) {

    this.url = url;

    if(!cnvs || !url) return;
    fname = fname || 'picture';

    var data = cnvs.toDataURL("image/png");
    data = data.substr(data.indexOf(',') + 1).toString();

    var dataInput = document.createElement("input") ;
    dataInput.setAttribute("name", 'imgdata') ;
    dataInput.setAttribute("value", data);
    dataInput.setAttribute("type", "hidden");

    var nameInput = document.createElement("input") ;
    nameInput.setAttribute("name", 'name') ;
    nameInput.setAttribute("value", fname + '.jpg');

    var myForm = document.createElement("form");
    myForm.method = 'post';
    myForm.action = url;
    myForm.appendChild(dataInput);
    myForm.appendChild(nameInput);

    document.body.appendChild(myForm) ;
    myForm.submit() ;
    document.body.removeChild(myForm) ;

}

在上面的脚本中的任何图像甲酸盐你想从浏览器保存在给上面的脚本这个功能,图像扩展

nameInput.setAttribute("value", fname + '.jpg');

现在这里是代码为你的“save_img.php”,并将其保存在你的根目录下。

<?php
    # we are a PNG image
    header('Content-type: image/png');

    # we are an attachment (eg download), and we have a name
    header('Content-Disposition: attachment; filename="' . $_POST['name'] .'"');

    #capture, replace any spaces w/ plusses, and decode
    $encoded = $_POST['imgdata'];
    $encoded = str_replace(' ', '+', $encoded);
    $decoded = base64_decode($encoded);

    #write decoded data
    echo $decoded;
?>


Answer 2:

你也许使用LIB的beta版本,html2canvas的github上页转到发布和下载稳定的alpha版本



文章来源: html2canvas.js not capturing image for dynamically generated content