Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: Display gif in CGI page

by Sinistral (Monsignor)
on Dec 08, 2011 at 15:22 UTC ( #942463=note: print w/replies, xml ) Need Help??

in reply to Display gif in CGI page

You're confusing two kinds of scripts, one that generates HTML and one that generates an image suitable for use as the src of an img tag.

Here is a simple CGI script that simply generates a page using an image tag:

#!/usr/bin/perl use strict; use warnings; use CGI qw(:all); my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->img({src => 'image.gif'}); print $q->end_html();

And here is the code you want that actually emits the conttents of an image file to be used as the image src:

#!/usr/bin/perl use strict; use warnings; use CGI qw(:all); my $q = CGI->new; print $q->header(-type => 'image/gif'); open(my $F, '<', '1.gif') || die "can not open\n"; local $\ = undef; print <$F>; close($F);

Save the 2nd script as and you can modify the first script to use your second script:

#!/usr/bin/perl use strict; use warnings; use CGI qw(:all); my $q = CGI->new; print $q->header(); print $q->start_html(); print $q->img({src => ''}); print $q->end_html();


  • You don't need two inclusions of CGI, just one with the flag :all to get all the routines
  • The image MIME type does not include a character set. It's binary data, there's no concept of character set
  • The die in will never be seen unless you look at web server error logs - the browser expects binary GIF image data and won't show your error message indicating that 1.gif can't be read
  • You don't need a script to use; a static HTML page with an img tag where the src attribute is is all you need. I just showed you that to show the two types of scripts you are confusing
  • You may not be able to use as your file name; you might have to use img.cgi, depending on how your web server is configureed
  • Your Perl may not be in /usr/bin; configure as appropriate for your system
  • These scripts assume that and 1.gif are all in the same directory. This is not necessary; you can use subdirectories.
  • Be sure to read the instructions for CGI.
  • You may also want to check out Beginner's Guide to CGI Scripting with Perl

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://942463]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2023-03-22 10:39 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (60 votes). Check out past polls.