Version 17 of GIF

Updated 2004-10-14 11:00:19

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 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 file format is somewhat controversial in that there's an "intellectual property" dispute about its use.

DKF - Technically, the IP dispute is over the LZW compression scheme (patented by Unisys) and not the GIF format itself (invented by Compuserve). I do not recall when the LZW patent expires (I don't know when the patent was granted, or how long patents last for) but for your legal protection, the Tcl GIF writing code doesn't use LZW compression, but rather a run-length encoding scheme that (apparently) works because there's only one sane way to write a GIF decompressor. I'm no expert on that though.

AK - AFAIK/IIRC it might be expired already.

However, don't depend on our recollections.

KPV - the primary LZW patent (4,558,302) expires in June, 2003.


Category Graphics | Category Acronym