http://www.perlmonks.org?node_id=7974
Description: This is a perl script that outputs a very small, hand-crafted GIF. This was written byte-by-byte, and is as small as it comes. Total size: 35 bytes (43 bytes if transparent). More notes in the code and below it.
{
## tinygif
## World's Smallest Gif
## 35 bytes, 43 if transparent

use strict;
my($RED,$GREEN,$BLUE,$GHOST,$CGI);

## Adjust the colors here, from 0-255
$RED   = 255;
$GREEN = 0;
$BLUE  = 0;

## Set $GHOST to 1 for a transparent gif, 0 for normal
$GHOST = 0;

## Set $CGI to 1 if writing to a web browser, 0 if not
$CGI = 0;

$CGI && printf "Content-Length: %d\nContent-Type: image/gif\n\n", 
  $GHOST?43:35;
printf "GIF89a\1\0\1\0%c\0\0%c%c%c\0\0\0%s,\0\0\0\0\1\0\1\0\0%c%c%c\1\
+0;",
  144,$RED,$GREEN,$BLUE,$GHOST?pack("c8",33,249,4,5,16,0,0,0):"",2,2,4
+;
}
That's it! Some notes:
Replies are listed 'Best First'.
RE: World's Smallest Gif
by turnstep (Parson) on Apr 19, 2000 at 18:47 UTC
    This is also legal in another sense: you can use it without fears of Unisys requiring fees, because it does not use LZW compression. See this slashdot article for more info.
RE: World's Smallest Gif
by providencia (Pilgrim) on Apr 21, 2000 at 19:17 UTC
RE: World's Smallest Gif
by Chris (Novice) on Apr 21, 2000 at 23:54 UTC
    I use this same sort of thing to display images that I store as blobs in a db. basically: print "content-type:image/gif\n\n"; print $blob_data; exit;
Re: World's Smallest Gif
by Dominus (Parson) on Dec 29, 2000 at 11:37 UTC
    The approach I like to use for similar tasks is to generate a PPM image file and then pipe the output to ppmtogif, like this:

    $RED = 255; $GREEN = 0; $BLUE = 0; open STDOUT, "| ppmtogif" or die "open: $!"; # "1 1" means that the image is 1x1 pixel. # "255" means that 255 is the maximum color intensity. print "P3 1 1 255 $RED $GREEN $BLUE\n"; close STDOUT or die "close: $!";
    This may not be as cool, and it has the disadvantage of requiring ppmtogif, but it's also a lot simpler, and it has the tremendous advantage that it's easy to generate images that are bigger than one pixel. For example, the images for this article were generated with this technique, as were these.

      You wrote a raytracer in perl and you yell at people who want to write a gif encoder in perl and you wrote a raytracer in perl and ... *head explodes*

      =) No offense meant, I watched people for 5-6 years insist that perl should have a perl-only way to create a gif. And for 5-6 years I've told them "That is as stupid as writing a ray-tracer in perl, wrong tool, wrong job." Now I've got to come up with a better "stupid" than ray-tracer. Thanks a lot MJD!

      Update: ++ to mjd below, I laughed when he called a guy in a forum a bozo after the guy argued about GIF's at the second PerlCon. =) Hopefully he knows I'm kidding...

      --
      $you = new YOU;
      honk() if $you->love(perl)

        Says extremely:
        You wrote a raytracer in perl and you yell at people who want to write a gif encoder in perl
        I didn't yell at anyone. I was just showing another way to do it.

        "That is as stupid as writing a ray-tracer in perl, wrong tool, wrong job."
        But it is stupid. It was a terrible ray tracer. Perl is too slow to write a good ray tracer.
Re: World's Smallest Gif
by extremely (Priest) on Dec 29, 2000 at 14:39 UTC
    Now, what if I want an animated 1 pixel gif? =)

    --
    $you = new YOU;
    honk() if $you->love(perl)

RE: World's Smallest Gif
by Simplicus (Monk) on Apr 20, 2000 at 20:36 UTC
    Very cool. I've always just created a 1*1 pixel gif in an editor and used that, but this is smaller.
    Simplicus
Re: World's Smallest Gif
by Anonymous Monk on Jun 24, 2011 at 19:10 UTC
    This worked brilliantly for me, thanks. The pack bit did however cause a warning. After some fooling around I changed:
    pack("c8",33,249,4,5,16,0,0,0)
    to
    pack("C8",33,249,4,5,16,0,0,0)
    and that seemed to do it.
Re: World's Smallest Gif
by Anonymous Monk on Jun 14, 2002 at 17:13 UTC
    How do you see the gif?

      > How do you see the gif?

      Scale it really big:

      IMG SRC="tiny.gif" WIDTH="500" HEIGHT="20"
      
      :)