繁体   English   中英

如何使用PHP保存Google Chart PNG?

[英]How can I save a Google Chart PNG with PHP?

我有一个使用Google Charts 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'});

 jQuery.post("action_save64png.php", {pngImageData :chart.getImageURI(), CourseID: 23, charttype: 'incomesplit' });

这将生成图表并向action_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文件有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM