Version 20 of GIF

Updated 2004-10-15 16:38:26

Graphic Interchange format, a compact and popular way of storing images. LZW-encoded. Tk's photo type of image allows both reading and writing GIF files. See http://www.datacompression.info/GIF.shtml for a series of references relating to GIF.


Salvatore Sanfilippo 14Oct2004: you can find BSD-licensed code for pure-Tcl GIF LZW encoding at [L1 ].


How to make a single-pixel GIF file: (but see also ".gif color dot" for a pure-Tcl version)

 % set im [image create photo -height 1 -width 1] 
 image4
 % $im put red
 % $im write im.gif -format gif
 % hexdump im.gif
 47 49 46 38 37 61 01 00 01 00 91 00 00 FF 00 00 # 0000 GIF87a..........
 FF FF FF FF FF FF FF FF FF 2C 00 00 00 00 01 00 # 0010 .........,......
 01 00 00 02 02 44 01 00 3B                      # 0020 .....D..;

Loading that file indeed shows a single red pixel. (A "hexdump" command is described at Dump a file in hex and ASCII.)


Writing a larger GIF file

    image create photo fooble -width 100 -height 100
    fooble blank
    for { set x 0 } { $x < 100 } { incr x } {
        for { set y 0 } { $y < 100 } { incr y } {
            if { $x >= 38 && $x <= 62 && $y >= 12 && $y <= 87
                 || $x >= 12 && $x <= 87 && $y >= 38 && $y <= 62 } {
                fooble put \#ffffff -to $x $y
            } else {
                fooble put \#ff0000 -to $x $y
            }
        }
    }
    grid [label .test -image fooble]
    fooble write swissflag.gif -format gif

See also


The GIF format may now be freely used as the primary LZW patent (4,558,302) has expired. See [http://en.wikipedia.org/wiki/GIF ]


Category Graphics | Category Acronym