Here is the code:
Function:
$ch = curl_init('http://chart.apis.google.com/chart?
chid='.md5(uniqid(rand(), true)).'&'.http_build_query($this->_post));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_POST,count($this->_post));
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($this->_post));
$response = curl_exec($ch);
$file = fopen('/path/to/test/graph.png', 'w+');
fwrite($file, $response);
fclose($file);
return $response;
In main .php I have:
header('Content-Type: image/png');
echo $chart;
As you can see... I save the response into .png file
http://helpmenow.dalibor-sojic.info/test/graph.png called by
http://helpmenow.dalibor-sojic.info/adsl/graph
Saved response into .png image is working, but... "dynamically"
generated is not working.
Here is the difference between headers in both cases:
Working http://helpmenow.dalibor-sojic.info/test/graph.png
HTTP/1.1 200 OK
Date: Sun, 05 Sep 2010 13:35:06 GMT
Server: Apache
Last-Modified: Sun, 05 Sep 2010 13:34:55 GMT
Accept-Ranges: bytes
Content-Length: 1845
Expires: Thu, 15 Apr 2011 20:00:00 GMT
Connection: close
Content-Type: image/png
Non working http://helpmenow.dalibor-sojic.info/adsl/graph
HTTP/1.1 200 OK
Date: Sun, 05 Sep 2010 13:35:07 GMT
Server: Apache
X-Powered-By: PHP/5.3.2
Content-Length: 1847
Connection: close
Content-Type: image/png
As you can see... the main difference is Content-Length
Dynamically generated png is 2 bytes longer
I've tried with "trim($response)" but... nothing happened.
Any hint?
On Aug 22, 12:41 am, Dalibor Sojic <[email protected]> wrote:
> Yes, I have tried. The request is valid.
>
> It is not problem with request.... I get PNG response, but.... the
> browser can not "render" it.
>
> On Aug 20, 8:04 pm, John Pettitt <[email protected]> wrote:
>
>
>
> > have you tried adding chof=validate and seeing what error is triggering the
> > problem?
>
> > On Aug 20, 2010, at 10:59 AM, Dalibor Sojic wrote:
>
> > > Any hint?
>
> > > On Aug 18, 3:47 pm, Dalibor Sojic <[email protected]> wrote:
> > >>http://helpmenow.dalibor-sojic.info/adsl/graph
>
> > >> This is with
>
> > >> $context = stream_context_create(
> > >> array('http' => array(
> > >> 'method' => 'POST',
> > >> 'content' => http_build_query($this->_post),
> > >> 'header' => "Content-Type: application/x-www-form-urlencoded\r
> > >> \n")));
> > >> fpassthru(fopen('http://chart.apis.google.com/chart', 'r', false,
> > >> $context));
>
> > >> ---------- Forwarded message ----------
> > >> From: Rémi Lanvin <[email protected]>
> > >> Date: Aug 18, 3:11 pm
> > >> Subject: Chart over php (curl or fpassthru)
> > >> To: Google Chart API
>
> > >> 2010/8/18 Dalibor Sojic <[email protected]>:
>
> > >>> I'm trying to use google chart sending post parametars, but always get
> > >>> image: The image “URL” cannot be displayed, because it contains
> > >>> errors.
>
> > >> Hello,
>
> > >> Remove the header that sets the content-type to image/png and you'll
> > >> be able to see the errors/warnings triggered by PHP.
>
> > >> --
> > >> Rémihttp://googlechartphplib.cloudconnected.fr/
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > > "Google Chart API" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected].
> > > For more options, visit this group
> > > athttp://groups.google.com/group/google-chart-api?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Google Chart API" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-chart-api?hl=en.