У меня есть сценарий, который создает изображения Google Chart для клиентов. Он отлично работает в HTML, но теперь мне нужно сохранить каждую диаграмму локально как .png.
Если я попробую:
$imageData = file_get_contents($url); file_put_contents('C:/xampp/htdocs/image.png',$imageData);
то я всегда получаю
[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400
Скрипт отлично работает для обычных изображений, но не для графиков Google. Тот же результат, если я использую cURL для сохранения изображения.
Ниже приведен пример моего URL-диаграммы Google. Я вычеркнул двоеточия и символы трубы, но это не решило проблему:
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
Пример CURL:
<?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; ?>
Мне удалось заставить это работать в конце – кажется, что пробелы в именах ярлыков вызывают ошибки, заменяя% 20 сделал трюк