Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #44509

Can read in the BMP data correctly ,but the size is not right?

Newsgroups comp.lang.python
Date 2013-04-29 10:20 -0700
Message-ID <aee818ca-e077-4e52-be55-7b8282684ba4@googlegroups.com> (permalink)
Subject Can read in the BMP data correctly ,but the size is not right?
From Jimmie He <jimmie.he@gmail.com>

Show all headers | View raw


   I'm trying to read in the BMP data by the the code below,and I'm check the data array with WINHEX,and it is correct,but which confuse me is why the size is 0x180,but the actual picture should be 48*48 = 0x120 bytes because I use 1-bit BMP not the 24bit BMP,could any one give some hints?


--------------------------------------------------------------------------------
__Head_Info = [
            [ 'Type'         ,0 , 2],#BM
            [ 'FSize'        ,2 , 4],#File Size
            [ 'Reserved'     ,6 , 4],#0x00000000
            [ 'OffBits'      ,10 , 4],#Offset of Image
            [ 'SSize'        ,14 , 4],# 40
            [ 'Width'        ,18 , 4],#Width
            [ 'Height'       ,22 , 4],#Hight
            [ 'Planes'       ,26 , 2],#1
            [ 'BitCount'     ,28 , 2],#{1,2,4,8,24}
            [ 'Compress'     ,30 , 4],#0
            [ 'SizeImage'    ,34 , 4],#Bytes Per Line
            [ 'XPM'          ,38 , 4],#2835
            [ 'YPM'          ,42 , 4],#2835
            [ 'ClrUsed'      ,46 , 4],#0
            [ 'ClrImportant' ,50 , 4]#0
            ]
_Type          =0;
_FSize         =1;
_Reserved      =2;
_OffBits       =3;
_SSize         =4;
_Width         =5;
_Height        =6;
_Planes        =7;
_BitCount      =8;
_Compress      =9;
_SizeImage     =10;
_XPM           =11;
_YPM           =12;
_ClrUsed       =13;
_ClrImportant =14;

def __getInt( b, idx):
    return binToInt(b,__Head_Info[idx][1],__Head_Info[idx][2])

def saveMatrixtoASC(bmpfilename,ascfilename):
    try:
        handle1=open( bmpfilename ,"rb")
        raw = bytearray(handle1.read( ))
        handle1.close
    except Exception as E:
        return "error:"+ str(E),""
    
    datastart=__getInt(raw, _OffBits)
    datasize =__getInt(raw, _SizeImage)
    print ('Image Offset = 0x%X'%datastart)
    print ('Image Size   = 0x%X'%datasize)
    handle2=open( ascfilename ,"w")
    for i in range(0,datasize):
       handle2.write('0x%02X,'%raw[datastart+i])
       if (i+1) % 16 == 0 :
          handle2.write("\n")
    handle2.close

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Can read in the BMP data correctly ,but the size is not right? Jimmie He <jimmie.he@gmail.com> - 2013-04-29 10:20 -0700
  Re: Can read in the BMP data correctly ,but the size is not right? Chris Angelico <rosuav@gmail.com> - 2013-04-30 03:53 +1000
  Re: Can read in the BMP data correctly ,but the size is not right? Peter Otten <__peter__@web.de> - 2013-04-29 19:57 +0200
    Re: Can read in the BMP data correctly ,but the size is not right? Jimmie He <jimmie.he@gmail.com> - 2013-04-30 06:09 -0700
    Re: Can read in the BMP data correctly ,but the size is not right? Jimmie He <jimmie.he@gmail.com> - 2013-05-04 03:26 -0700
  Re: Can read in the BMP data correctly ,but the size is not right? MRAB <python@mrabarnett.plus.com> - 2013-04-29 19:10 +0100
  Re: Can read in the BMP data correctly ,but the size is not right? 88888 Dihedral <dihedral88888@googlemail.com> - 2013-04-29 11:12 -0700

csiph-web