I wrote a program to read the .bmp file. Here is the information of this the .bmp file:
here is another test image:
I found the "biSizeImage" not equal to "width * height * (biBitCount / 8)", why does that happen?
Each scanline is padded to a multiple of 4 bytes.
In your image, the width is 1190 pixels, each taking 24 bits / 8 bits/byte = 3 bytes. This needs 1190 pixels/scanline * 3 bytes/pixel = 3570 bytes/scanline. This value is rounded up to 3572 bytes per scanline, making it a multiple of 4 bytes. You then have 3572 bytes / scanline * 685 scanlines = 2446820 bytes for the image.