【问题标题】:Generate a graph in html and save as image在 html 中生成图表并保存为图像
【发布时间】:2017-05-15 14:48:17
【问题描述】:

我想使用某些值生成图表并将输出捕获/保存为 jpeg/png。我正在使用谷歌图表生成图表并使用 html2canvas 进行捕获。以下是我正在尝试的代码。

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript" src="html2canvas.js"></script>

    <script type="text/javascript" src="jquery-3.2.1.min.js"></script>
    <script language="javascript">

    <script type="text/javascript">
      google.charts.load('current', {'packages':['bar']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses', 'Profit'],
          ['2014', 1000, 400, 200],
          ['2015', 1170, 460, 250],
          ['2016', 660, 1120, 300],
          ['2017', 1030, 540, 350]
        ]);

        var options = {
          chart: {
            title: 'Company Performance',
            subtitle: 'Sales, Expenses, and Profit: 2014-2017',
          },
          bars: 'horizontal' 
        };

        var chart = new google.charts.Bar(document.getElementById('barchart_material'));

        chart.draw(data, google.charts.Bar.convertOptions(options));
      }
    $(document).ready(function() {
    html2canvas($("#barchart_material"), {
        onrendered: function(canvas) {
            // canvas is the final rendered <canvas> element
            var myImage = canvas.toDataURL("image/png");
            window.open(myImage);
        }
    });
</script>
  </head>
  <body>
<div id="barchart_material" style="width: 900px; height: 500px;"></div>
</body>
</html>

Google 图表工作正常,并且打开捕获的图像,作为单独的代码,但是当我合并两者时它不会。 而且,我的目标是在本地保存图像,而不仅仅是打开。

【问题讨论】:

  • 您是否尝试删除 window.open(myImage);这样图像就不会打开
  • @user93 是的,我试过了,但只是为了确认 html2canvas 是否正常工作,我已经放了 window.open
  • 似乎 html2canvas 无法与谷歌图表一起正常工作。您是否尝试过 chart.getUrI() 方法来获取图像

标签: javascript html html2canvas


【解决方案1】:

为自己省去很多麻烦,不要使用交互式 Google Charts API。请改用基于图像的图表。

https://developers.google.com/chart/image/docs/gallery/bar_charts

【讨论】:

  • 感谢您的提示。但我正在寻找问题中讨论的图像保存部分。
  • @umzee 问题是,所有这些html2canvas 库都是黑客。它们并没有以您期望的方式真正发挥作用,并且通常会产生副作用。你可能会遇到一个。如果您切换到基于图像的图表,则无需执行任何操作。
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 2016-02-13
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2015-06-21
  • 1970-01-01
相关资源
最近更新 更多