【问题标题】:Get image from Google API Chart从 Google API 图表中获取图像
【发布时间】:2016-07-19 16:35:30
【问题描述】:

我有一个 C# 代码在服务器上运行,我需要使用 Google API Chart 生成一些图表,然后将它们保存到服务器上的图像中。

我记得 Google API Chart 有一个向导,您可以在其中创建图表,但现在它是 100% JavaScript,所以不知道是否有办法做到这一点。

这可能吗?

【问题讨论】:

  • 创建图表后,您可以使用chart.getImageURI() 获取PNG - 参见reference - 基本上返回一个基数为64 的字符串,您可以将其保存为.png 或包含在src 标签中等等……
  • 所以你建议我首先使用 HTML 和 Javascript 工具创建图像。然后获取图像 URL 并使用它吗? getImageURI() 是静态的吗?还是以后可以改变?
  • this link 对您有帮助吗?
  • @WhiteHat 感谢您与我分享工作示例,然后我将其用作正确答案,因为它听起来正确。非常感谢

标签: c# google-visualization


【解决方案1】:

一旦'ready'chart 开火,
你可以使用getImageURI 来获取一个base 64 字符串,
可以保存为.PNG,
或包含在img 标签中,
如下例...

要使用frozen version,您可以将'current' 替换为最新的存档——'45'

google.charts.load('current', {
  callback: function () {
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', '2005');
    data.addColumn('number', '2006');
    data.addRows([
       [new Date('01/01/2016'), 200, 210],
       [new Date('01/02/2016'), 190, 220],
       [new Date('01/03/2016'), 205, 200],
       [new Date('01/04/2016'), 220, 230],
       [new Date('01/05/2016'), 212, 210],
       [new Date('01/06/2016'), 185, 193],
       [new Date('01/07/2016'), 196, 207]
    ]);
    var options = {
      height: 400
    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

    google.visualization.events.addListener(chart, 'ready', function () {
      document.getElementById('image_div').innerHTML = '<img alt="Chart" src="' + chart.getImageURI() + '">';
    });

    chart.draw(data, options);
  },
  packages: ['corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div>Chart</div>
<div id="chart_div"></div>
<div>Image</div>
<div id="image_div"></div>

【讨论】:

  • 您对此有何看法,让 html 生成图表,然后 C# 向该页面发出 Web 请求并从响应中获取图像?这样,chartImageURI 以后是否更改也没关系,因为我将始终得到正在呈现的那个。
  • 对,行得通。但早些时候,我不确定你所说的 URI 变化是什么意思。它不是任何地方的地址——它是图表的字符串(base 64)表示——就像获取一个 PNG 文件并将其保存为字符串
  • 哦,它是一个惊人的 64 基数……那将永远不会改变。非常感谢
  • 不起作用,因为它无法从 C# 获取使用 Javascript ajax 调用呈现的图像。
  • 对C#没有太多经验,但肯定有办法,你能发布从ajax调用的代码吗?如果您有一个绘制图表的页面,那么当图表的'ready' 事件触发时,通过ajax 将图像uri 发送回c# 怎么办? idk,在这里大声思考......
【解决方案2】:

静态图表 API 已弃用,向导离线一段时间:https://developers.google.com/chart/image/docs/chart_wizard

但 API 仍然有效,并且图库文档可以帮助您: https://developers.google.com/chart/image/docs/gallery/chart_gall

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多