Javascript 在命令行(而不是浏览器)中运行php文件时,自动将google图表转换为PNG图像

Javascript 在命令行(而不是浏览器)中运行php文件时,自动将google图表转换为PNG图像,javascript,php,image,charts,Javascript,Php,Image,Charts,我从chart.getImageURI()函数中获取图像URL。但是,当我在没有浏览器的情况下运行php文件时,如何自动移动到本地服务器文件夹。我使用SSH中的命令行运行php文件 谁能解释一下我是怎么做到的。提前谢谢 <script type="text/javascript"> google.charts.load("current", {packages:['corechart']}); google.chart

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

谁能解释一下我是怎么做到的。提前谢谢

<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>";  

load(“当前”{packages:['corechart']});
google.charts.setOnLoadCallback(drawChart);
函数绘图图(){
var data=new google.visualization.DataTable(//jsonarray-hear);
变量选项={
标题:'图形标题',
curveType:'函数',
宽度:800,
身高:400
};
var chart_div=document.getElementById('chart_div');
var chart=新的google.visualization.LineChart(chart\u div);
google.visualization.events.addListener(图表'ready',函数(){
var imgURL=chart.getImageURI();
chart_div.innerHTML='';
});
图表绘制(数据、选项);
}
";  
我在php文件的顶部添加了脚本

该图是创建的,其工作良好。 但我想在我的本地服务器上的特定文件夹的png图像文件中的这个图形。
此PHP文件不是在浏览器中运行的。它是在SSH中作为命令行运行的。因此,我希望自动将图表保存在图像中。

要实现这一点,您必须使用无头浏览器在服务器端执行js并呈现google图表

您可以使用此库

下面是一个示例:使用以下命令创建一个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脚本中,使用函数执行phantomJs命令,该命令将图形呈现为图像:

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

如果不使用无头浏览器执行javascript并呈现图表,然后进行转换,则无法使用PHP执行javascript代码。请使用命令行javascript引擎(可能由
PHP script.PHP
输出提供)。如果Google可视化在线呈现图表,您可能也希望获取URI并使用命令行下载它(例如,
curl
)。您必须安装phantomjs,请检查此问题