Keith Vetter : 2006-09-06
proc bmpsize {fname} { set fin [open $fname r] fconfigure $fin -translation binary set sig [read $fin 2] if {$sig ne "BM"} { close $fin error "$fname is not a BMP file" } seek $fin 18 ;# Past 4 integer header fields binary scan [read $fin 4] i width binary scan [read $fin 4] i height close $fin return [list $width $height] }
AMG: The width and height are stored at offset 18, not 14. At 14 is the DIB header size, which is normally 40 bytes [L1 ]. I updated the above code accordingly.