是否可以将谷歌图表保存为图像?

时间:2011-03-28 23:17:51

标签: javascript image save charts

我正在制作一个应用程序,我需要将Google图表保存为图像。我正在使用的是tomcat,servlets和javascript。有没有办法将以下生成的图表保存为图像? (参考帖子末尾的代码)。 想法是用户会看到此图表,然后可以选择将其上传到他的Facebook个人资料中。我不确定这是否可以以原生格式上传到Facebook,或者需要保存为jpg。

<html>    
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = new google.visualization.DataTable();

    data.addColumn('string', 'Year');
    data.addColumn('number', 'Sales');
    data.addRows(4);
    data.setValue(0, 0, ''+2004);
    data.setValue(0, 1, 1000);
    data.setValue(1, 0, '2005');
    data.setValue(1, 1, 1170);
    data.setValue(2, 0, '2006');
    data.setValue(2, 1, 860);
    data.setValue(3, 0, '2007');
    data.setValue(3, 1, 1030.5);

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, {width: 400, height: 240, title: 'Company Performance',hAxis: {title: "X", titleTextStyle: {color: "green"}}});
  }

</script>
  </head>

  <body>
    <div id="chart_div"></div>
  </body>
</html>

6 个答案:

答案 0 :(得分:12)

看起来这个功能最近被 1 添加为:

chart.getImageURI()

请参阅documentation

1 它似乎已于2014年1月29日发布。

答案 1 :(得分:7)

来自Riccardo Govoni的示例解决方案,如谷歌图表的问题页面所示。我们的想法是将SVG转换为Canvas元素。

链接:

教程:http://www.battlehorse.net/page/topics/charts/save_google_charts_as_image.html

示例页面:http://www.battlehorse.net/attach/topics/charts/google_charts_to_image.html

答案 2 :(得分:4)

这就是我做的事情

http://danml.com/#/download.html

 download(chart.getImageURI(), 'fileName.png', "image/png");

如果3kb脚本太多,请使用http://www.closure-compiler.appspot.com/home

答案 3 :(得分:1)

您最简单的选择是使用Google Chart API

重新生成图表的静态图像版本

答案 4 :(得分:1)

使用grChartImg库。这是George Risvas的跨浏览器解决方案。 支持所有浏览器,包括旧版本的IE,并为您提供许多自动程序,如将图表转换为图像,下载,将图表显示到对话框,将其上传到服务器等。

有关详细信息,请查看www.chartstoimage

我希望能帮助你。

答案 5 :(得分:0)

首先,下载此库:

http://danml.com/download.html

并且刚刚在图表中添加事件监听器

function: 
 google.charts.setOnLoadCallback(drawVisualization);

  function drawVisualization() {

var chart = new google.visualization.ComboChart(document.getElementById('chart_tickets'));
    google.visualization.events.addListener(chart, 'ready', function () {

    $("#GraphDownloadTickets").click(function() {
         download(chart.getImageURI(), 'fileName.png', "image/png")

    });
}