读取 bmp 文件头信息, read bmp infomation

本文介绍了一个用于读取BMP图像文件头信息的C语言程序。该程序定义了BMP文件头的数据结构,并通过一系列fread函数从指定的BMP文件中读取各个字段的数据。读取完成后,程序将打印出文件头中的关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>

typedef signed char         INT8;
typedef signed short        INT16;
typedef signed int          INT32;
typedef unsigned char       UINT8;
typedef unsigned short      UINT16;
typedef unsigned int        UINT32;


typedef struct tagBITMAPINFOHEADER
{
    UINT16        ID;
    UINT32        biSize;
    UINT32        biReserve;
    UINT32        biDataOffset;
    UINT32        biHeaderSize;
    UINT32        biWidth;
    UINT32        biHeight;
    UINT16        biPlanes;
    UINT16        biBitCount;
    UINT32        biCompression;
    UINT32        biSizeImage;
    UINT32        biXPelsPerMeter;
    UINT32        biYPelsPerMeter;
    UINT32        biColor;
    UINT32        biClrImportant;
}BitmapIfoHeader;

static void ReadBmpHeader(FILE *fp, BitmapIfoHeader *pBmpHeader)
{
    if(pBmpHeader==NULL || fp==NULL)
        return;
    fread((void*)&pBmpHeader->ID, 1, 2, fp);
    fread((void*)&pBmpHeader->biSize, 1, 4, fp);
    fread((void*)&pBmpHeader->biReserve, 1, 4, fp);
    fread((void*)&pBmpHeader->biDataOffset, 1, 4, fp);
    fread((void*)&pBmpHeader->biHeaderSize, 1, 4, fp);
    fread((void*)&pBmpHeader->biWidth, 1, 4, fp);
    fread((void*)&pBmpHeader->biHeight, 1, 4, fp);
    fread((void*)&pBmpHeader->biPlanes, 1, 2, fp);
    fread((void*)&pBmpHeader->biBitCount, 1, 2, fp);
    fread((void*)&pBmpHeader->biCompression, 1, 4, fp);
    fread((void*)&pBmpHeader->biSizeImage, 1, 4, fp);
    fread((void*)&pBmpHeader->biXPelsPerMeter, 1, 4, fp);
    fread((void*)&pBmpHeader->biYPelsPerMeter, 1, 4, fp);
    fread((void*)&pBmpHeader->biColor, 1, 4, fp);
    fread((void*)&pBmpHeader->biClrImportant, 1, 4, fp);
}

int main(int argc,char *argv[])
{
    FILE *fp = NULL;
    BitmapIfoHeader bmpInfo = {0};
    if(argc<1)
        return 0;
    fp = fopen(argv[1], "rb");
    if(fp == NULL)
        return 0;
    ReadBmpHeader(fp, &bmpInfo);
    
    printf("ID = %d/n", bmpInfo.ID);
    printf("biSize = %d/n", bmpInfo.biSize);
    printf("biDataOffset = %d/n", bmpInfo.biDataOffset);
    printf("biHeaderSize = %d/n", bmpInfo.biHeaderSize);
    printf("biWidth = %d/n", bmpInfo.biWidth);
    printf("biHeight = %d/n", bmpInfo.biHeight);
    printf("biBitCount = %d/n", bmpInfo.biBitCount);
    printf("biCompression = %d/n", bmpInfo.biCompression);
    printf("biSizeImage = %d/n", bmpInfo.biSizeImage);
    printf("biXPelsPerMeter = %d/n", bmpInfo.biXPelsPerMeter);
    printf("biYPelsPerMeter = %d/n", bmpInfo.biYPelsPerMeter);
    fclose(fp);
    return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值