bmp_readheader.c

来自「Bitmap文件格式的解释源码」· C语言 代码 · 共 42 行

C
42
字号
#include "stdio.h"
#include "stdlib.h"

#include "BMP_File_Header.h"

BITMAPFILEHEADER sBMP_FileHeader;		//BMP文件头
BITMAPINFO sBMP_Info;					//BMP信息头数据,包括调色板的数组(最大256个RGBQUAD数据)

//==================================================================//
//
//
//
//==================================================================//
unsigned int BMP_Read_Header(unsigned int *File_Add)
{
	int iTemp = 0,i=0,j=0,m=0;
	sBMP_FileHeader = *(BITMAPFILEHEADER *)File_Add;
	if(sBMP_FileHeader.bfTYPE!=0x4D42)
		return 0;
	else
	{
		File_Add = File_Add+sizeof(BITMAPFILEHEADER);
		sBMP_Info.bmiHeader = *(BITMAPINFOHEADER *)File_Add;	//获取文件类型,即从文件头
		File_Add = File_Add+sizeof(BITMAPINFOHEADER);																	//长度去判断0x28为BMP
		switch(sBMP_Info.bmiHeader.biBITCount)
		{
			case 1: j = 1; break;
			case 4: j = 16; break;
			case 8: j = 256; break;
			default: return 0; break;
		}
		i = sizeof(RGBQUAD);
		iTemp = j*i;
		
		sBMP_Info.P_bmiColors = (RGBQUAD *)malloc(iTemp);
		for(m=0;m<j;m++)
		{
			*(sBMP_Info.P_bmiColors++) = *(((RGBQUAD *)File_Add)++);
		}
		return 1;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?