我如何保存谷歌图表PNG与PHP

How can I save a Google Chart PNG with PHP?

本文关键字:PNG PHP 谷歌 何保存 保存      更新时间:2023-09-26

我有一个图表,我已经与谷歌图表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文件生效了