В фиксированных местах метаданных файла есть три важных целых числа, каждое из которых занимает ровно 4 байта:
По смещению 10–13 байтов — смещение в файле растрового изображения, с которого начинается массив пикселей.
При смещении 18-21 байт ширина изображения в пикселях.
При смещении 22-25 байт высота изображения в пикселях.
/*
* Read in the location of the pixel array, the image width, and the image
* height in the given bitmap file.
*/
void read_bitmap_metadata(FILE *image, int *pixel_array_offset, int *width, int *height) {
fseek(image, 10, SEEK_SET);
fread(pixel_array_offset, 4, 1, image);
fseek(image, 18, SEEK_SET);
fread(width, 4, 1, image);
fseek(image, 22, SEEK_SET);
fread(height, 4, 1, image);
}
Должен ли я использовать fseek
3 раза здесь, даже заметив, что ширина и высота непрерывны?