1

I have a script which generates Google Chart images for clients. It works fine displaying in HTML but I now need to save each chart locally as a .png.

If I try:

$imageData = file_get_contents($url); file_put_contents('C:/xampp/htdocs/image.png',$imageData);

then I always receive

[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400

The script works fine for normal images, but not Google charts. Same result if I use cURL to save the image too.

An example of my Google chart $url is below. I've hexed out the colons and pipe symbols but it did not fix the issue:

http://chart.apis.google.com/chart?cht=lc&chxt=x,y&chs=700x400&chco=76A4FB,FF9900&chg=0,8.3333333&chdl=Visits|Unique%20visits&chls=3|3&chma=40,20,20,30&chxr=1,0,33411&chds=0,33411&chd=t%3A33411,33411,33411,33411,33411,33411,33411,33411,33411,33411,33411,33411|33411,33411,33411,33411,33411,33411,33411,33411,33411,33411,33411,33411&chxl=0%3A|Jan-10|Feb-10|Mar-10|Apr-10|May-10|Jun-10|Jul-10|Aug-10|Sep-10|Oct-10|Nov-10|Dec-10
hud
  • 203
  • 1
  • 5
  • 13
  • Related: http://stackoverflow.com/questions/697472/file-get-contents-returning-failed-to-open-stream-http-request-failed – Dogbert Jan 23 '11 at 17:24
  • This has been covered in great detail here: http://stackoverflow.com/questions/13824096/save-google-charts-as-a-image – MarkP Oct 23 '13 at 08:42

2 Answers2

1

CURL example:

<?php
    $ch = curl_init("www.example.com/curl.php?option=test");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);       
    curl_close($ch);
    echo $output; ?>
Mark Mooibroek
  • 7,636
  • 3
  • 32
  • 53
0

I managed to get this to work in the end - it seems the spaces in the label names were causing errors, replacing with %20 did the trick

hud
  • 203
  • 1
  • 5
  • 13