【问题标题】:How can I save a Google Chart PNG with PHP?如何使用 PHP 保存 Google Chart PNG?
【发布时间】:2014-03-09 09:15:02
【问题描述】:

我有一个使用 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。

我需要做些什么不同的事情?

【问题讨论】:

    标签: javascript php base64 google-visualization


    【解决方案1】:

    原来在一个PNG 64bit字符串的开头有一个字符串

    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 文件是有效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多