在c中使用位图

在c中使用位图,c,bitmap,bmp,C,Bitmap,Bmp,这是我第一次使用位图,我已经了解了我需要的大部分内容。我只需要想办法 1打印前16个像素 请帮助:我正在努力掌握bmp格式 #include <stdio.h> typedef struct __attribute__((__packed__)) { unsigned char fileMarker1; unsigned char fileMarker2; unsigned int bfSize; uint16_t unused1; ui

这是我第一次使用位图,我已经了解了我需要的大部分内容。我只需要想办法

1打印前16个像素

请帮助:我正在努力掌握bmp格式

#include <stdio.h>

typedef struct __attribute__((__packed__)) {
    unsigned char fileMarker1;
    unsigned char fileMarker2;
    unsigned int   bfSize;
    uint16_t unused1;
    uint16_t unused2;
    unsigned int   imageDataOffset;
} FILEHEADER;

typedef struct __attribute__((__packed__)) {
    unsigned int   biSize;
    int            width;
    int            height;
    uint16_t planes;
    uint16_t bitPix;
    unsigned int   biCompression;
    unsigned int   biSizeImage;
    int            biXPelsPerMeter;
    int            biYPelsPerMeter;
    unsigned int   biClrUsed;
    unsigned int   biClrImportant;
} INFOHEADER;

typedef struct __attribute__((__packed__)) {
    unsigned char  b;
    unsigned char  g;
    unsigned char  r;
} IMAGE;

int main(void) {
    FILEHEADER fh;
    INFOHEADER ih;
    FILE *img = fopen("sample.bmp", "rb");
    fread(&fh, sizeof(unsigned char), sizeof(FILEHEADER), img);
    fread(&ih, sizeof(unsigned char), sizeof(INFOHEADER), img);
    printf("width: <%d>\nheight: <%d>\n", ih.width, ih.height);
    printf("planes: <%d>\n", ih.planes) ;

    printf("Bits per pixel: <%d>", ih.bitPix );



    return 0;
}

你知道结构中的所有字段都是用来做什么的吗?因为每像素位数就在那里。至于实际的图像数据,请继续阅读文件。我完全错过了!既然你指出了这一点,我注意到这正是bitPix的用途。谢谢打印像素意味着什么?你不能仅仅发出一个printf,然后在终端上显示16像素的位图。您是否有一种输出格式来表示前16个像素的数据?对不起,我的意思是将前16个像素打印为数字值,比如十六进制值,或者任何效果最好的值。