NOJ/65/main.c
Saturneric 52668c4122 Add.
2020-09-01 00:46:43 +08:00

59 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}