数字图像的基本文件格式

来源:互联网 发布:windows update没有 编辑:程序博客网 时间:2024/04/27 22:36

每一种图像文件均有一个文件头,在文件头之后才是图像数据。

文件头的包括:文件类型,文件制作者,制作时间,版本号,文件大小等内容。

常用的图像文件有:BMP,JPEG,PCX,TIEF,GIF等类型的图像文件。

 

BMP图像的文件格式

位图文件头:

typedef struct tagBITMAPFILEHEADER

{

   WORD   bfType;            文件类型,位图必须是0x424D,即字符串“BM”

   DWORD bfSize;             指定文件大小,包括这14个字节的文件头

   WORD   bfReserved1;     保留字,不用考虑

   WORD   bfReserved2;     保留字,不用考虑

   DWORD bfOffBits;          从文件头到实际位图数据的偏移字节数

} BITMAPFILEHEAER;

 

位图信息头:

typedef struct tagBITMAPINFOHEADER

{

   DWORD  biSize;                  本结构的长度,为40

    LONG     biWidth;                图像的宽度,单位是像素

    LONG     biHeight;               图像的宽度,单位是像素

   WORD     biPlanes;               位平面数,必须是1

   WORD     biBitCount;           指定颜色位数,即用多少位来表示一个像素

   DWORD   biCompression;      指定是否压缩,有效值为 

                                                        BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS

   DWORD   biSizeImage;         指定位图数据所占的字节数

   LONG      biXPelsPerMeter;    目标设备水平分辨率,单位为像素/米

   LONG      biYPelsPerMeter;    目标设备垂直分辨率,单位为像素/米

   DWORD   biClrUsed;             实际使用的颜色数,若为0,则使用的颜色数为2的biBitCount次方

   DWORD   biClrImportant;      图像中重要的颜色数,若为0,则所有颜色都是重要的 

}BITMAPINFOHEADER;

 

调色板:

对于16位,24位的真彩色图,BITMAPINFOHEADER后直接跟的就是图像数据。

调色板实际上是一个数组,共有biClrUsed个元素(如果biClrUsed为0则就有2的biBitCount次方个元素)。数组中每个元素的类型是一个RGBQUAD结构,占4个字节。

typedef struct tagRGBQUAD

{

   BYTE rgbBlue;

   BYTE rgbGreen;

   BYTE rgbRed;

   BYTE rgbReserved;

}RGBQUAD;

注意:位图中每一行的字节数必须是4的整数倍,如果不是则需要补齐。

          BMP文件的数据是按从下到上,从左到右的顺序进行存放。

原创粉丝点击