rsiedl has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

Could anyone tell me if it's possible to something like the following:
#!/usr/bin/perl use strict; use warnings; use GD::Graph::bars; print "Content-type: text/html\n\n"; print "This is a test html page<br>\n"; print "<img src=\"", &draw , "\"><br>\n"; sub draw { my @dates = ( "2000", "2001", "2002", "2003", "2004" ); my @articles = ( 2, 1, 4, 7, 6 ); my @data; @data = ([ @dates ], [ @articles ]); my $graph; $graph = GD::Graph::bars->new(400,200); $graph->set( y_label => "Articles", x_label => "Date", bar_spacing => 3, show_values => 1 ) or die $graph->error; my $gd; $gd = $graph->plot(\@data) or die $graph->error; return "Content-type: image/png\n\n", $gd->png; } # end-sub exit;
I realise its possible to do:

but i'm specifically trying to print directly to the HTML page...

Cheers,
Reagen

Replies are listed 'Best First'.
Re: Printing an Image directly to HTML
by fireartist (Chaplain) on Feb 03, 2005 at 11:16 UTC

    Just to contradict the responses above ;)

    A quick google for "inline image" shows up this page: http://www.zopezen.org/Members/zopista/News_Item.2004-04-14.5620 which links to this article: http://www.unixreview.com/documents/s=8217/ur0305h/

    It worked for me in firefox, but didn't work in IE, but then that's probably because I've got all the Ie security settings switched on.

    <html> <h1>Example 2</h1> <img src="data:image/gif;base64, R0lGODlhAwEgAPcAAP///87OzqWlpYSEhHNzc2tra1paWiEYGP9CGP8xAL1SEN6thO ++cQv+E AP/OGP/OAM7Oxr29xjEA/2MA/5wA/+8A/+dK79573talzv8AnO9KjP8AY+eEnO9SY/ +8AGAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAADASAARwj/AAMIHE +iwoMGD CBMqXMiwocOHECNKnEixokWGEQ4cGDCwwIABAgJsMLAhwwYPKFEmWNnAQYSBB/79Mx +DzXwSZ B2j+OxAgpgEDMgn4FLAzwoCZPWUGJTAzAlACAXDq/FcQ6EyrBKzetHmxq9evYMMWfE +l2g9kK GypQoDBhwj8JSuO+lUB3Atu1FTJQyDAhg0m/BVD+O5kSAQIBLl+KXcy4sePHYiNEaD +AAQYOV CVIKTvnPgwEPZv2G9ivaZF69pdNmGPCgdesGDxrM/CeAo8ALdSdIaNuW7u7duiVcMH +hh7drh Ei+QXs68eQYNBjV7WNhBM4aCGDCvZLhAe4KDDBqI/28A+auA8+fLL4yQniD7kOrjy5 +/v8OV5 uW/ntl2bIW/fvRlMlZIBCChQU1ECHcVTVLQJJMCBUMW0oEBMKRWSU3JVFddGDsqkGH +0ghjhf BAgYsFJnoJVk2nIUVGDXWm5ZhZ9ccP32G1sVqDXAXhsAmMAALbnUUAS6tRWABb9N8O +FBxRlH wUJOIofdcsNZsNx1CUm3kAbWYecdd18aFN54IpZp5plopqnmmmy26aZBDy450HkFKO +aAAA3g 2VBNAljFkVEGDGDfTy8ZAJVTBpBFgKAUGiCAU/AJQAB8AkVAQFYyafjPAI4G0Geinh +r65qhl GlUTUCDt91+PKkqnUk0fbv8FVYWSKfUTTgEcRRt6SU0I1AHoPSpTolZp6umwAcgoJ6 +nMqvfo TwQUEABfwdE4lwESGHCXi6hNMBJhCaDIkniGIbCsfFtR2uy6IhqVklmhqdWfi2zBNW +N+vvW2 H714oTbSXyaB1sC5E+U7gQUNNenkwgwbhyVCGjT3cEIYuGqxqxwYlB1mHYCpHXjjhS +zyyAs8 hqeJmg2GkoqkscyccWrdNcFPbtk7I1ANGBDba605IKTGRU5QEJJFTkyQwg0nvZbRyp +Em5W3L ZXyQlhVt7N3VWGMG8sgilzyqZAFIZlQDGyFwAAIpHuDBABsMANrb8JqF0gFxG+XAAH +eqe2S+ Rh//hEFwEiA8ENJPN8Rc334fPhAHFzeOUsdefrxQd5IXNCbXmIsHAbucd+7556CHLv +ropJfO OcFhg03RgciKWCxBr5suO0Sm6i0po2hrloBlAyNU07H/TCqXsJsSZdOvySoFbFJW8X +TgAS9V GJemym9lAPOzZ2/QABoJCkABBUCFWgUEmDRSSiztfhjrwBo/q0yS4iQh/BVqlCmfz+ +5kP7Ay cRS7QK/zyVZ8or0CHkRGt6qLk/yTms94QCkeMMzAakJBAMJPV9eznqSct5M5DetTSc +kQ7PAT EuNdz4AoDFsBgGIAj9hMKb6RAIyM46+9EABcHliJAiyDGNUlhD0MeVRX/1iYQhSKjT +0v6VZv XgjDfMnQLn3pVtw048AcNqBceoPMBXJSxC5WKmy565Ff8jLDttxrLjd6IhnbohrS3B +BcmSkM 6ihSl8IlRGl4vADiCnIBC/hRcA2BAAcY57iUcABxGOiAIjvgNYVQbiWNJAgDJknJSl +qykpG0 yGTc9i6XnaZFMGIifmpko/3gSC0xo0AB5FYYBLDNXBLJzW8AmRCkUeACuMylLgmXEO +f4ZY8D kc4gh0lMDmigOinZHEGs5gHIOTJMlgvZAqZJzWpakzF3u0wcVxaatKjmNDlCpV0KAB +cZnVEm wOENb9omntjA5mcIIRJwBkK03aDOlrvMZ5Q0RvOlwV0pS5pZCAYOicisGfRqWxPPJS +eZSfWM zUQr2QxKSMLNbi7nNP3xy17I2KK+xMwAM7tVXH5iAPHAUyB/S5I6eZMkxNkSj8bRIx +99SVOp FYRqCeGAIg+pMe8UkwPWfKTWxCTNoC5AmWmSTG1c6Z0cuqpHFWWlAf5CGJKoqADthI +1rfPYh 3ABHjxgIawDCStYLLLFwvIxI0/wCVrK6NawcWA50CCLMnw7zmJpBKkqhmRChfoeo46 +GkUa/p Rdrpco7uOexAMKBLYPpNlxAZ6DAnJlm7WlavA4FANR0rEM1W8yCDDS01C0va0pr2tK +g9CEAC BAQAOw== " > </html>
      That does not work for me (tested in Firefox 0.9, IE6 and Opera).

      Update:
      And even if it would work for my Firefox, itīs still pretty useless because IE is known not to support it. But still. Good point++.

      holli, regexed monk
        It works for me on WinXP with:
        • Firefox 1.0
        • Netscape 7.1
        • Opera 7.5
        Doesn't work with IE 6.
      Cool. Works for me on linux with Mozilla 1.7.3

      I'm not really a human, but I play one on earth. flash japh
      and even back to moz 1.4 on w2k... ++
Re: Printing an Image directly to HTML
by merlyn (Sage) on Feb 03, 2005 at 11:20 UTC
      From your article:
      ``how do I return two different MIME types in one response?'' ... Well, you can't.
      Unless you use multipart mime messages (like in mail)?
Re: Printing an Image directly to HTML
by fireartist (Chaplain) on Feb 03, 2005 at 11:32 UTC
    http://developer.irt.org/script/955.htm

    Here's a url about using JS to achieve this in IE. It should be possible to do some JS browser detection and use both solutions to get it working for IE and mozilla.

Re: Printing an Image directly to HTML
by Fletch (Bishop) on Feb 03, 2005 at 14:11 UTC

    Not exactly what you're trying to do, but it works with most anything that can display a <table> :)

    use GD;$f='#ffffff';$T=table;sub p{print@_}p"<body bgcolor=$f>";for(@A +RGV){ open*G,$_ or(warn("$_: $!")&&next);$g=GD::Image->newFromGif(G)||(warn$ +_, ": GD error"and next);@c=map{$_!=$g->transparent?sprintf'#'.('%.2x'x3) +,$g-> rgb($_):$f}0..$g->colorsTotal;p"<$T border=0 cellpadding=0 cellspacing +=0>";( $x,$y)=$g->getBounds;for$j(0..$y){p"<tr>";for($i=0;$i<$x;$i++){$s=1;$s +++&& $i++while($i+1<$x&&$g->getPixel($i+1,$j)==$g->getPixel($i,$j));p" <td bgcolor=",$c[$g->getPixel($i,$j)]," colspan=$s>&nbsp"}}p"</$T>"}
Re: Printing an Image directly to HTML
by edan (Curate) on Feb 03, 2005 at 11:11 UTC

    It's not possible to do that. HTML is text, which can contain "links" to images via the <IMG> tag.

    --
    edan

Re: Printing an Image directly to HTML
by holli (Abbot) on Feb 03, 2005 at 11:12 UTC
    In short words: no.
    Html is a text-format. You cannot integrate binary data into a html-file.

    holli, regexed monk