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

Peter Otten __peter__ at web.de
Mon Apr 29 13:57:07 EDT 2013


Jimmie He wrote:

>    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?

According to wikipedia <http://en.wikipedia.org/wiki/BMP_file_format>

"""
The size of each row is rounded up to a multiple of 4 bytes [...]
"""

So 48/8 == 6 will be rounded to 8, and 8*48 == 384 == 0x180.

>         handle1=open( bmpfilename ,"rb")
>         raw = bytearray(handle1.read( ))
>         handle1.close

To actually do something the last line should be handle1.close(). I 
recommend

with open(bmpfilename ,"rb") as handle1:
    raw = bytearray(handle1.read())

instead which has the additional advantage that the file will be closed if 
an exception occurs in the with-suite.




More information about the Python-list mailing list