NOJ/65/main.c

59 lines
2.3 KiB
C
Raw Normal View History

2020-08-31 16:46:43 +00:00
#include <stdio.h>
#include <stdlib.h>
typedef unsigned short int WORD;
typedef unsigned int DWORD;
typedef unsigned char BYTE;
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // 位图文件的类型必须为BM(0-1字节
DWORD bfSize; // 位图文件的大小以字节为单位2-5字节
WORD bfReserved1; // 位图文件保留字必须为0(6-7字节
WORD bfReserved2; // 位图文件保留字必须为0(8-9字节
DWORD bfOffBits; // 位图数据的起始位置10-13字节以相对于
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; // 本结构所占用字节数14-17字节
DWORD biWidth; // 位图的宽度以像素为单位18-21字节
DWORD biHeight; // 位图的高度以像素为单位22-25字节
WORD biPlanes; // 目标设备的级别必须为1(26-27字节
WORD biBitCount; // 每个像素所需的位数必须是1双色28-29字节
DWORD biCompression; // 位图压缩类型,必须是 0不压缩30-33字节
DWORD biSizeImage; // 位图的大小以字节为单位34-37字节
DWORD biXPelsPerMeter; // 位图水平分辨率每米像素数38-41字节
DWORD biYPelsPerMeter; // 位图垂直分辨率每米像素数42-45字节)
DWORD biClrUsed; // 位图实际使用的颜色表中的颜色数46-49字节 设为0的话则说明使用所有调色板项即2 biBitCount种颜色
DWORD biClrImportant; // 位图显示过程中重要的颜色数50-53字节
}BITMAPINFOHEADER;
typedef struct tagRGBQUAD
{
BYTE rgbBlue; // 蓝色的亮度值范围为0-255)
BYTE rgbGreen; // 绿色的亮度值范围为0-255)
BYTE rgbRed; // 红色的亮度值范围为0-255)
BYTE rgbReserved; // 保留字必须为0
} RGBQUAD;
int main(void)
{
FILE *result_r;// 输出的三个通道文件
FILE *result_g;
FILE *result_b;
FILE *bmp;// 要读入的BMP文件
long real_w;// 一个扫描行的实际占用字节数
long offset = 0;// 用于偏移每行结尾处的冗余数据
BITMAPFILEHEADER header;// BMP文件头
BITMAPINFOHEADER info;// BMP信息头
bmp=fopen("DATA5611.BMP", "r");
fread(&header,14,1,bmp);
fread(&info,40,1,bmp);
printf("%d %d\n",info.biWidth,info.biHeight);
return 0;
}