Javascript 如何使用PHP保存Google图表PNG?
我有一个图表,我已经与谷歌图表API生成,我想保存为一个图像文件。我使用PHP将其保存到文件中,但它无效 我需要做什么 javascriptJavascript 如何使用PHP保存Google图表PNG?,javascript,php,base64,google-visualization,Javascript,Php,Base64,Google Visualization,我有一个图表,我已经与谷歌图表API生成,我想保存为一个图像文件。我使用PHP将其保存到文件中,但它无效 我需要做什么 javascript var chart = new google.visualization.PieChart(document.getElementById('chart_div_source')); chart.draw(data, {width: 450, height: 300, title: 'Course Payment Breakdown'}); jQu
var chart = new google.visualization.PieChart(document.getElementById('chart_div_source'));
chart.draw(data, {width: 450, height: 300, title: 'Course Payment Breakdown'});
jQuery.post("action_save64png.php", {pngImageData :chart.getImageURI(), CourseID: 23, charttype: 'incomesplit' });
这将生成图表并向action\u save64png.php
发出ajax请求以保存文件
PHP文件
$EncodedPNG = $_POST['pngImageData'];
$FileName = 'chart_'. $_POST['CourseID'] . '.png';
$decoded=base64_decode($EncodedPNG);
file_put_contents('../charts/' . $FileName,$decoded);
这会保存文件,但当我尝试打开它时,它是无效的png
我需要做什么不同的事情呢?事实证明,PNG 64位字符串的开头有一个字符串
data:image/png;base64,
这必须首先删除
$EncodedPNG = $_POST['pngImageData'];
//Replace spaces with +
$EncodedPNG = str_replace(' ','+',$EncodedPNG);
//Remove identifier string from begining of data.
$EncodedPNG = str_replace('data:image/png;base64,', '', $EncodedPNG);
$FileName = 'chart_'. $_POST['CourseID'] . '.png';
$decoded=base64_decode($EncodedPNG);
file_put_contents('../charts/' . $FileName,$decoded);
现在png文件是有效的