On Mon, Feb 2, 2009 at 8:26 AM, bacoms <googlebr...@balfour.me.uk> wrote:

> I've got a web page that includes a graph. I achieve this with code
> that looks like:
>
>     print "Content-type: text/html\n\n";
>                          etc
>                          etc
>      my($myImage) = $myChart->plot(\...@data) or die $myChart->error;
>
>      open(IMAGE, ">Images/zzzgraph.png") or die $!;
>      binmode IMAGE;
>      print IMAGE $myImage->png;
>      close IMAGE;
>
>      print "    <img src='Images/zzzgraph.png' width='800'
> height='600'>\n";
>
> Is it possible to eliminate the need to first write the image to
> disk?
>
> All my attempts at trying this have all failed. The best I get is with
> the following code:
>
>     print "Content-type: text/html\n\n";
>                          etc
>                          etc
>      my($myImage) = $myChart->plot(\...@data) or die $myChart->error;
>      print $myImage->png;
>
> which produces gibberish where the chart should be. (cribbed from
> http://linuxgazette.net/issue83/padala.html )
>
> I suspect is that this specifies "Content-type: image/png\n\n" whereas
> my web page specifies "Content-type: text/html\n\n".
>
> I've tried specifying both content-types on my web page but this
> results on the user being asked if they want to save the script
> (??????).
>
> Can it be done and how????
>

The issue is that you cannot return the image embedded in the HTML.  You can
write a CGI script that returns an image (only), though.  You are correct
that this would use the png content type.  Therefore, to construct a page
that contains an image within HTML, your page would return HTML that
includes an img tag that has your CGI for image production as the source.

Sean

Reply via email to