我从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");