Javascript 在命令行(而不是浏览器)中运行php文件时,自动将google图表转换为PNG图像
我从chart.getImageURI()函数中获取图像URL。但是,当我在没有浏览器的情况下运行php文件时,如何自动移动到本地服务器文件夹。我使用SSH中的命令行运行php文件 谁能解释一下我是怎么做到的。提前谢谢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
<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,请检查此问题