Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SVG标记转换为PNG图像并下载_Javascript_Jquery_Svg_Canvas - Fatal编程技术网

Javascript SVG标记转换为PNG图像并下载

Javascript SVG标记转换为PNG图像并下载,javascript,jquery,svg,canvas,Javascript,Jquery,Svg,Canvas,我使用D3图表来显示树形图,所以它现在可以正常工作了,但我需要下载这个svg聊天图像 图表html格式: <svg width="960" height="30000"> <g transform="translate(120,20)"> <path>......</path> <path>......</path> <path>......</pat

我使用D3图表来显示树形图,所以它现在可以正常工作了,但我需要下载这个svg聊天图像

图表html格式:

<svg width="960" height="30000">
    <g transform="translate(120,20)">
        <path>......</path>
        <path>......</path>
        <path>......</path>
         ......
         ...... 
    </g>
</svg>

因此,请告诉我如何下载svg图表作为图像

下一个链接有一个很好的解决问题的方法

它包含两个主要功能

  • SVG字符串
  • 字符串到图像
  • 我认为您使用的代码与我刚才添加的代码相同,因为您使用的是保存下载功能。这里的问题是你的代码上还有什么。如您所见,这段代码实际上下载了png最终结果。让我们从这里开始,为您找到解决方案

    //让我们创建一个模拟可视化
    变量宽度=300,高度=300;
    var circleSizeMax=15;
    var rMax=数学最小值(宽度、高度)/2-圆形最大值;
    var radius=d3.刻度.线性().范围([0,rMax]);
    变量角度=d3.scale.linear().range([0,2*Math.PI]);
    var size=d3.scale.linear().range([0,circleSizeMax]);
    var color=d3.scale.ordinal()范围(“fcfb3c',“fcfb3c'”、“FCFF900'、“FFF555A'、“FF555555A'、“FFD2断路器”、“77D362'、“ffd16f'、“FCFB333C'、“fcfb3c 3C'、、“FCFFFFFFFF900'、、“FCFFFF55555555555A'、、、、、、、、、、、、、、、、、、、、、、“04B33333333B3B3B3B33B33B3333333B33333333B333333333333333333333333333333333333333333333333333333333333333333333333“2733”、“2733',“5A66 6 6 6 6 6 6 6 6 6 6 2”、“3555566665CD”、“DB3340”、“35777777777A”、“2733 33 33 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7”、“3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,”7 7 7 7 7 7 7 7 7,”7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,”,”,”,”7 7 7 7 7 7 7 7 7 7 7 7,”,”,”,”,”5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6,”6 6 6 6 6 6 6,”,”,”,”6 6 6 6 6,”6 6 6 6 6 6 6 6 6 6 6 6 6 6 6,”,”,”6 6 6 6 6 6“,”FFC33C“,”FBE2B4“5E4412F'、、“35555555E4412F'、、“3555555555E4412F'、、“3555555555E44412F'、、“355555555555E4412F'、“355555555555E555555555E44412F'、、“55555E4444555E444455555555555555555555555555555555E4F,”,”,”,”,”,”,”,”,”,”5E4444444412F'55E412F'55555E45E412F,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”55E44444F“4298B5”中的一个,以及“4298B5”中的一个,以及“O3555B55B5B5”中的一个,以及“4298B55B5”中的一个,以及“4898B5B5B5B5”中的一个,“ADC4C”中的一个,以及“ADC4C4C4CCC”中的一个,以及,“92006666O66666A”中的,,,,,,,,,“ADC4C4C4C4C4C C-ADC4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'0DC9F7','7F7“F',“F',3555555F',“F',355555555555F,”F',“F'355555555F',“F',”F',35555555FF47',“F'355555555555F,”F'555555555555555555555F47',“F',“F,”F'555555FF55555555FFFFFFF47,,,,,,,,,,,,,,,,,,,,,,3555555F5555555555555555555555555555555555555555555FFF47,,,,,,,,,,,,,,ා60047A的一个家里的一个家家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里,一个家里的一个家里的一个家里的一个家家里的一个、一个家家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家家里的一个家里的一个家家里的一个家家家家里的一个家家里的一个家家里的一个家家里的一个家家家家里的一个家家里的家里的一个家里的一个家里的一个家家里的一个家里的一个家家家家家家家,"F17D80","7374",95’、‘68A8AD’、‘C4D4AF’);
    var x=函数(d){返回半径(d.r)*数学cos(角度(d.angle));};
    var y=函数(d){返回半径(d.r)*数学sin(角度(d.angle));};
    var svg=d3。选择('body')。追加('svg'))
    .attr('width',width)
    .attr('高度'),高度;
    var chart=svg.append('g').attr('transform','translate(+[width/2,height/2]+'));
    var data=d3.range(150).map(函数(d){return{r:Math.random(),angle:Math.random(),size:Math.random()};});
    图表。选择全部('cirle')
    .data(data).enter()
    .append('圆')
    .attr('class','blendCircle'))
    艾特先生({
    cx:x,
    西:是的,
    r:函数(d){返回大小(d.size);},
    填充:函数(d,i){返回颜色(i);}
    });
    //设置导出按钮
    d3.选择(#saveButton')。打开('单击',函数()){
    var svgString=getSVGString(svg.node());
    svgString2Image(svgString,2*宽,2*高,'png',save);//将Blob和filesize字符串传递给回调函数
    函数保存(数据块、文件大小){
    saveAs(dataBlob,'D3-vis导出为PNG.PNG');//FileSaver.js函数
    }
    });
    //以下是处理实际导出的函数:
    //getSVGString(svgNode)和svgString 2Image(svgString、宽度、高度、格式、回调)
    函数getSVGString(svgNode){
    svgNode.setAttribute('xlink','http://www.w3.org/1999/xlink');
    var cssStyleText=getCSSStyles(svgNode);
    附录CSS(cssStyleText,svgNode);
    var serializer=新的XMLSerializer();
    var svgString=serializer.serializeToString(svgNode);
    svgString=svgString.replace(/(\w+):?xlink=/g,'xmlns:xlink=');//修复没有命名空间的根xlink
    svgString=svgString.replace(/NS\d+:href/g,'xlink:href');//Safari NS命名空间修复
    返回svgString;
    函数getCSSStyles(parentElement){
    var selectorTextArr=[];
    //将父元素Id和类添加到列表中
    选择Ortextarr.push(“#”+parentElement.id);
    for(var c=0;cd3.select('#saveButton').on('click', function(){
            // alert('test');
            var svgString = getSVGString(svg.node());
            // console.log(svgString);
            svgString2Image( svgString, 2*width, 2*height, 'png', save ); // passes Blob and filesize String to the callback
    
            function save( dataBlob, filesize ){
                saveAs( dataBlob, 'D3 vis exported to PNG.png' ); // FileSaver.js function
            }
        });