From a news:comp.lang.tcl posting by Berry Kercheval < mailto:berry@kerch.com >: And this works for simple GIF files: proc gifsize {name} { set f [open $name r] fconfigure $f -translation binary # read GIF signature -- check that this is # either GIF87a or GIF89a set sig [read $f 6] switch $sig { "GIF87a" - "GIF89a" { # do nothing } default { error "$f is not a GIF file" } } # read "logical screen size", this is USUALLY the image size too. # interpreting the rest of the GIF specification is left as an exercise binary scan [read $f 2] s wid binary scan [read $f 2] s hgt return [list $wid $hgt] } ---- See also [Reading JPEG image dimensions] and [Reading PNG image dimensions]. [Category Graphics]