Esiste sempre una sezione "keader" di un file BMP di 14 byte, quindi è meglio iniziare a leggere dal 15 ° byte in poi. Ho avuto esattamente lo stesso problema di voi molte lune fa.
Quindi ... usa una chiamata di funzione come questa prima del tuo fread
:
fseek ( file, 15, SEEK_SET);