Разница между BMP image_size против размера - PullRequest
0 голосов
/ 25 апреля 2020

На мой вопрос, вероятно, легко ответить. поэтому, если я читаю из структуры bmp, я вижу в файле bmp.h два разных размера

заголовок bmp.h

struct bmp_header{
    uint16_t type;              // "BM" (0x42, 0x4D)
    uint32_t size;              // file size
    uint16_t reserved1;         // not used (0)
    uint16_t reserved2;         // not used (0)
    uint32_t offset;            // offset to image data (54B)
    uint32_t dib_size;          // DIB header size (40B)
    uint32_t width;             // width in pixels
    uint32_t height;            // height in pixels
    uint16_t planes;            // 1
    uint16_t bpp;               // bits per pixel (1/4/8/24)
    uint32_t compression;       // compression type (0/1/2) 0
    uint32_t image_size;        // size of picture in bytes, 0
    uint32_t x_ppm;             // X Pixels per meter (0)
    uint32_t y_ppm;             // X Pixels per meter (0)
    uint32_t num_colors;        // number of colors (0)
    uint32_t important_colors;  // important colors (0)
} __attribute__((__packed__));

после того, как я прочитал их, я вижу, что иногда файл bmp image_size совпадает с size файла bmp, но иногда его на 54 байта больше, чем обычный image_size? почему

я понимаю, что смещение изображения равно 54, но когда мне нужно вычислить это число по размеру?

PS: я знаю, как вычислить нормальное image_size

пример: Первый :

File size =  3126 bytes
File image_size: 3072 bytes
File offset. = 54
File dib. = 40

Второй

File size = 16182 bytes
File image size = 16128 bytes
File offset. = 54
File dib. = 40
...