import os,struct,sys if len(sys.argv) != 2: print 'Usage:python viewer.py bmpfile' exit(1) filename = sys.argv[1] header_keys = ('signature','file size','reserved','reserved','data offset','size','width','height','planes','bitCount','compression','image size','XpixelsPerM','YpixelsPerM','ColorUsed','ColorImportant') header_fmt = '=2sihhiiiihhiiiiii' palette_fmt = 'BBBB'*256 f = open(filename,'rb') #read header print '----Header----' s_header = f.read(54) for k,it in zip(header_keys,struct.unpack(header_fmt,s_header)): print "%s : %s" %(k,it) #read palette print '----palette----' s_palette = f.read(1024) palette = struct.unpack(palette_fmt,s_palette) i = 0 while i < len(palette): print palette[i:i+4] i += 4