转换谷歌图表为PNG图像自动当我运行php文件在命令行(不在浏览器)


convert google chart as PNG image automatically when i run the php file in command line(Not in browser)

我从chart.getImageURI()函数中获取图像URL。但是,当我在没有浏览器的情况下运行PHP文件时,我如何自动移动到我的本地服务器文件夹?我用命令行.....运行PHP文件在SSH。

谁能解释一下我该怎么做?提前谢谢。

<script type="text/javascript">
                 google.charts.load("current", {packages:['corechart']});
              google.charts.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = new google.visualization.DataTable(//jsonarray hear);

                    var options = {
                  title: 'Title of Graph',
                  curveType: 'function',
                  width: 800,
                  height: 400
                };

               var chart_div = document.getElementById('chart_div');
                var chart = new google.visualization.LineChart(chart_div);
                  google.visualization.events.addListener(chart, 'ready', function () {
                    var imgURL = chart.getImageURI();
                    chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">';
                });

               chart.draw(data, options);
            }
        </script>

        <div id='"chart_div'"></div>";  

我在PHP文件的顶部添加了这个脚本。

图形已创建,并且工作良好。但我想要这个图形的PNG图像文件在本地服务器的特定文件夹中。这个PHP文件不能在浏览器中运行。它在SSH中作为命令行运行。我想要自动保存图像。

要实现这一点,你必须使用一个无头浏览器来执行js并在服务器端呈现谷歌图表。

你可以用这个库来使用PhantomJs

下面是一个例子:用

创建一个js文件(例如generate.js)
var system = require('system');
var args = system.args;
// require PhantomJS-Google-Charts library
var GC = require('/path/to/googleCharts.js');
// google chart data as first argument
var jsonData = JSON.parse(args[1]);
GC.generateChart(jsonData, function(svgHtml){
    //filename where to save the chart as second arg
    var fileName = args[2];
    var page = require('webpage').create();
    page.content = svgHtml;
    page.render(fileName);
    phantom.exit();
});

然后在php脚本中使用exec函数执行phantomJs命令,将图形渲染为图像:

exec("/path/to/phantomJs /path/to/generate.js '{chartOptions}' path/to/image.png");