BMP文件格式

合集下载

bmp文件格式详解

bmp文件格式详解

BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。

由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。

Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。

下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。

BMP文件的数据按照从文件头开始的先后顺序分为四个部分:bmp文件头(bmp file header):提供文件的格式、大小等信息位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表位图数据(bitmap data):就是图像数据啦^_^下面结合Windows结构体的定义,通过一个表来分析这四个部分。

我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。

因此,我们常常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位图数据了,这其实说的是24或32位图的情况。

这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。

下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。

我们使用的图像显示如下:这是一幅16位的位图文件,因此它是含有调色板的。

在拉出图像数据进行分析之前,我们首先进行几个约定:1. 在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。

BMP格式结构详解

BMP格式结构详解

位图文件(B it m a p-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。

Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(d evice-d ependent b itmap,DDB)文件格式。

Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(d evice-i ndependent b itmap,DIB)格式,目的是为了让Windows能够在任何类型的显示设备上显示BMP位图文件。

BMP位图文件默认的文件扩展名是BMP或者bmp。

6.1.2 文件结构位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它们的名称和符号如表6-01所示。

表6-01 BMP图像文件组成部分的名称和符号位图文件的组成结构名称符号位图文件头(bitmap-file header)BITMAPFILEHEADERbmfh位图信息头(bitmap-information header)BITMAPINFOHEADERbmih彩色表(color table)RGBQUAD aColors[]图像数据阵列字节BYTE aBitmapBits[]位图文件结构可综合在表6-02中。

表6-02 位图文件结构内容摘要偏移量域的名称大小内容图像文件头0000h标识符(Identifier)2 bytes两字节的内容用来识别位图的类型:‘BM’ : Windows 3.1x, 95, NT, linux‘BA’ :OS/2 Bitmap Array‘CI’ :OS/2 Color Icon‘CP’ :OS/2 Color Pointer‘IC’ : OS/2 Icon‘PT’ :OS/2 Pointer0002h File Size 1 dword用字节表示的整个文件的大小0006h Reserved 1 dword保留,设置为0000Ah Bitmap DataOffset1 dword从文件开始到位图数据开始之间的数据(bitmapdata)之间的偏移量000Eh BitmapHeader Size1 dword位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。

BMP

BMP

BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。

它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。

BMP文件的图像深度可选lbit、4bit、8bit及24bit。

BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

由于BMP 文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。

424D 46900000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F0000 0000 00000000 0000*00F8 E007 1F00 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....在Visual C++ 6.0中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下:typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned long DWORD;也就是说BYTE是无符号的char型(char型本质上也是一种1个字节的整型),WORD是无符号short型,DWORD是无符号long型。

而在Visual C++ 6.0中,char型长度为1字节,short型长度为2字节,int和long型长度都为4字节,因此可以认为BYTE与WORD,DWORD定义的变量分别获得了1字节,2字节,4字节内存,正与BYTE与WORD,DWORD的字面意义相符。

位图常见的格式

位图常见的格式

位图常见的格式位图图像(BitmapImage)是一种由矢量图像转换而成的用来在计算机屏幕上显示静态图像的格式。

位图图像可以存储为不同的文件格式,其中最常见的格式包括BMP,GIF,JPEG,PCX,PNG,TIFF等。

这些文件格式有一些共同的特征,也有一些不同的特征。

BMP(bits-per-pixel)文件格式是最常见的位图图像格式。

该格式的特征是每一个像素都可以被描述为精确的位深度,即每一个像素点都可以用计算机中的位来表示。

不同的BMP文件一般有不同的位深度,如1位、4位、8位、24位等。

BMP文件格式支持多种色彩系统,如调色板(Palette)、RGB(Red、Green、Blue)等。

GIF(Graphic Interchange Format)文件格式是一种可以存储256个调色板颜色索引的图像文件格式。

GIF是一种使用LZW (Lempel-Ziv-Welch)算法进行压缩的图像文件格式,因此其文件大小一般较小,这使其在网络上传播和保存上具有优势。

GIF文件格式一般用于制作简单的动画效果,使其在网站页面上产生点缀效果。

JPEG(Joint Photographic Experts Group)文件格式是图像文件格式中最流行的一种,它可以存储将近16.7万色彩索引,它可以将一幅图像压缩到更小的文件大小,这使其在网络上传播十分方便。

JPEG文件格式可以在没有失真的情况下压缩至一半左右的图像大小,这使得它在商业上得到广泛应用。

PCX(Paintbrush eXchange)文件格式是一种常见的网络上传播的图像文件格式。

它的特征在于文件存储的是位图像素,分辨率可以达到640×480,而且可以存储256色彩索引的调色板,它支持使用调色板和RGB模式进行调色。

PNG(Portable Network Graphics)文件格式是一种新的图像文件格式,它可以支持24位位图像素,它可以完美地模拟出彩色图像。

bmp的知识点

bmp的知识点

bmp的知识点BMP的知识点BMP(Bitmap)是一种图像文件格式,它以像素为基本单位来描述图像。

下面将介绍BMP文件的结构、特点以及常见的应用。

一、BMP文件结构BMP文件由文件头、位图信息头、调色板和图像数据组成。

1. 文件头(14字节):包含文件类型(2字节)、文件大小(4字节)、保留字段(4字节)和图像数据偏移量(4字节)等信息。

2. 位图信息头:包含位图信息头大小(4字节)、图像宽度(4字节)、图像高度(4字节)、颜色平面数(2字节)、每个像素所占位数(2字节)等信息。

3. 调色板(可选):用于存储图像的颜色信息,包括调色板项数、颜色索引和颜色值等。

4. 图像数据:按行存储的像素数据,每个像素用指定的位数来表示。

二、BMP文件特点1. BMP文件格式简单,易于解析和处理,适用于各种平台和应用程序。

2. BMP文件支持多种色彩深度,如1位、4位、8位、16位、24位和32位等,可以满足不同图像质量和存储空间需求。

3. BMP文件保留了图像的原始数据,不进行压缩,因此不会损失图像的质量,但文件大小相对较大。

4. BMP文件支持灰度图像和彩色图像,灰度图像每个像素只有一个亮度值,彩色图像每个像素有红、绿、蓝三个分量的值。

三、BMP文件的应用1. 图像处理:BMP文件是常用的图像处理格式,可以通过读取、修改和保存BMP文件来实现各种图像处理操作,如图像旋转、缩放、灰度化、边缘检测等。

2. 图像显示:BMP文件可以被各种图像显示软件和设备所支持,如画图工具、图片浏览器、数码相框、打印机等。

3. 图像转换:BMP文件可以通过转换工具将其转换为其他图像格式,如JPEG、PNG、GIF等,以满足不同应用场景的需求。

4. 图像分析:BMP文件中的像素数据可以被提取和分析,用于图像处理算法的开发、图像识别和图像分析等领域。

5. 图像存储:BMP文件可以作为图像的原始存储格式,用于长期保存和备份,以保证图像质量和数据的完整性。

图片的格式

图片的格式

图片格式是计算机存储图片的格式,常见的存储的格式有bmp,jpg,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,e ps,ai,raw 等。

一、 BMP 图像文件格式BMP 是一种与硬件设备无关的图像文件格式,使用非常广。

它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很大。

BMP 文件的图像深度可选 lbit、4bit、8bit 及 24bit。

BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

由于 BMP 文件格式是 Windows 环境中交换与图有关的数据的一种标准,因此在 Windows 环境中运行的图形图像软件都支持 BMP 图像格式。

典型的 BMP 图像文件由三部分组成:位图文件头数据结构,它包含 BMP 图像文件的类型、显示内容等信息;位图信息数据结构,它包含有 BMP 图像的宽、高、压缩方法,以及定义颜色等信息。

BMP 是(Windows 位图) Windows 位图可以用任何颜色深度(从黑白到 24 位颜色)存储单个光栅图像。

Windows 位图文件格式与其他 Microsoft Windows 程序兼容。

它不支持文件压缩,也不适用于 Web 页。

从总体上看,Windows 位图文件格式的缺点超过了它的优点。

为了保证照片图像的质量,请使用 PNG 、JPEG、TIFF 文件。

BMP 文件适用于 Windows 中的墙纸。

优点:BMP 支持 1 位到 24 位颜色深度。

BMP 格式与现有 Windows 程序(尤其是较旧的程序)广泛兼容。

缺点: BMP 不支持压缩,这会造成文件非常大。

BMP 文件不受 Web 浏览器支持。

二、 PCX 图像文件格式PCX 这种图像文件的形成是有一个发展过程的。

最先的 PCX 雏形是出现在 ZSOFT 公司推出的名叫 PC PAINBRUSH 的用于绘画的商业软件包中。

BMP格式解析

BMP格式解析

BMP格式解析⼀、介绍 BMP⽂件格式,⼜称为位图,是Windows系统中⼴泛使⽤的图像⽂件格式。

BMP⽂件的数据分为四个部分:bmp⽂件头(bmp file header):提供⽂件的格式、⼤⼩等信息位图信息头(bitmap information):提供图像数据的尺⼨、位平⾯数、压缩⽅式、颜⾊索引等信息调⾊板(color palette):可选,如使⽤索引来表⽰图像,调⾊板就是索引与其对应的颜⾊的映射表位图数据(bitmap data):图像数据⼆、代码⽰例#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>struct bmp_header{unsigned short type; //⽂件类型unsigned int total_size; //整个位图⼤⼩,头部 + 图像数据单位字节unsigned short reserved1;unsigned short reserved2;unsigned int valid_offset; //图像数据偏移量} __attribute__((packed));struct bmp_info{unsigned int info_size; //该结构体⼤⼩,固定40字节unsigned int bmp_width; //图⽚宽度unsigned int bmp_height; //图⽚⾼度unsigned short planes; //总是1unsigned short bitcount; //像素多少位表⽰unsigned int compression; // 0:BI_RGB 不压缩; ......unsigned int img_size; //图像有效数据⼤⼩,单位字节int x_pix_meter; //⽔平分辨率,像素/⽶表⽰int y_pix_meter; //垂直分辨率,像素/⽶表⽰unsigned int color_used; //位图实际使⽤彩⾊表中的颜⾊索引数,⼀般0unsigned int color_mportants; //color_used 上⾯使⽤的索引值重要数, 0表⽰都重要}__attribute__((packed));int bmp_analyze(unsigned char *path){int fd = -1, i;struct bmp_header f_header;struct bmp_info f_info;//打开bmp图⽚fd = open(path, O_RDONLY);if (fd < 0) {printf("open %s error.\n", path);return -1;}//读取⽂件头信息read(fd, &f_header, sizeof(struct bmp_header));printf("type:0x%x(%c%c)\n", f_header.type, f_header.type&0xff, (f_header.type>>8)&0xff);printf("total_size:%d\n", f_header.total_size);printf("reserved1:%d\n", f_header.reserved1);printf("reserved2:%d\n", f_header.reserved2);printf("valid_offset:%d\n", f_header.valid_offset);read(fd, &f_info, sizeof(struct bmp_info));printf("info_size:%d\n", f__size);printf("bmp_width:%d\n", abs(f_info.bmp_width));printf("bmp_height:%d\n", abs(f_info.bmp_height));printf("planes:%d\n", f_info.planes);printf("bitcount:%d\n", f_info.bitcount);printf("compression:%d\n", f_pression);printf("img_size:%d\n", f_info.img_size);printf("x_pix_meter:%d\n", f_info.x_pix_meter);printf("y_pix_meter:%d\n", f_info.y_pix_meter);printf("color_used:%d\n", f_info.color_used);printf("color_mportants:%d\n", f_info.color_mportants);//关闭打开的⽂件close(fd);return0;}int main(int argc, char **argv){unsigned char *path = argv[1];if(path == NULL) {printf("invalid file path \n");exit(-1);} else {printf("read bmp file: %s\n", path); }bmp_analyze(path);return0;}三、效果./a.out 24x32_3.bmpread bmp file: 24x32_3.bmptype:0x4d42(BM)total_size:3126reserved1:0reserved2:0valid_offset:54info_size:40bmp_width:24bmp_height:32planes:1bitcount:32compression:0img_size:3072x_pix_meter:2834y_pix_meter:2834color_used:0color_mportants:0四、附件解析 链接:注意格式是ARGB8888,只不过⼩端存储(低字节放在低地址),图⽚数据⼤⼩ 24*32*4字节 = 3072,加上头部 14 + 40 = 3126 字节后续会使⽤该BMP图⽚打⽔印在YUV上:。

bmp的常见知识

bmp的常见知识

bmp的常见知识BMP的常见知识一、BMP格式简介BMP(Bitmap)是一种无损的图像文件格式,它以像素点的颜色信息来描述图像。

BMP格式最早由Microsoft公司在Windows操作系统中使用,并得到了广泛的应用。

BMP格式的文件通常以".bmp"为后缀名。

二、BMP格式特点1. 色彩深度:BMP格式支持多种色彩深度,包括1位、4位、8位、16位、24位和32位。

色彩深度越高,图像的颜色表现能力就越强。

2. 像素点存储:BMP格式将每个像素点的颜色信息存储在文件中,每个像素点的颜色占用的字节数根据色彩深度而定。

3. 文件大小:由于BMP格式是无损压缩的,因此文件大小相对较大。

尤其是在图像分辨率较高、色彩深度较大的情况下,文件大小会更加庞大。

4. 支持透明色:BMP格式支持透明色的设置,使得图像可以在不同背景下进行显示。

三、BMP格式的优缺点1. 优点:- 图像质量高:BMP格式文件保存的是原始图像数据,不进行任何压缩,因此图像质量非常高,不会损失细节。

- 跨平台兼容性好:BMP格式是一种通用格式,在不同的操作系统和软件中都可以打开和编辑。

- 支持透明色:BMP格式支持透明色的设置,方便图像的叠加和合成。

2. 缺点:- 文件大小较大:由于BMP格式不进行任何压缩,文件大小相对较大,占用存储空间较多。

- 不支持动画和多帧图像:BMP格式只能保存单帧静态图像,不支持动画和多帧图像的存储。

四、BMP格式与其他图像格式的比较1. 与JPEG格式比较:- 图像质量:BMP格式保存的是原始图像数据,不会损失图像质量,而JPEG格式是有损压缩的,会损失一定的图像细节。

- 文件大小:BMP格式文件较大,而JPEG格式通过压缩可以显著减小文件大小。

- 应用场景:BMP格式适用于对图像质量要求较高的场景,如印刷、设计等;JPEG格式适用于在存储和传输过程中需要减小文件大小的场景,如网页、电子邮件等。

bmp编码规则 -回复

bmp编码规则 -回复

bmp编码规则-回复什么是bmp编码规则?在计算机领域,BMP(Bitmap)是一种广泛使用的图像文件格式,常用于存储光栅图像。

BMP图像文件存储像素一对一的位图数据,而且不进行图像压缩。

BMP编码规则指的就是对BMP图像文件的存储规范和格式要求。

在本文中,我们将逐步讨论BMP编码规则的细节,并深入了解其重要性和应用。

1. 文件头部分(14字节)BMP文件的开头包含一个固定的文件头部分,总共14个字节。

其中,前两个字节为"BM",代表文件的类型为BMP。

紧接着的四个字节表示文件的大小,即整个BMP图像文件的大小,以字节为单位。

接下来的两个字节保留字段,后两个字节表示位图数据的偏移量。

2. 信息头部分(40字节)信息头部分用于描述位图的大小、位数、压缩类型等信息。

这个部分共40个字节,其中包含如下几个关键的字段:- 图像宽度和高度:分别用四个字节表示,表示图像的像素宽度和高度(以像素为单位)。

- 图像颜色平面数和位数:分别用两个字节表示,表示图像的颜色模式和位数。

通常,一个BMP文件只有一个颜色平面,位数可以是1位、4位、8位、16位、24位或32位。

- 压缩类型和图像大小:分别用四个字节表示。

若图像采用压缩格式,则此字段为非零值;否则为0,表示无压缩。

- 调色板信息:如果图像的位数小于或等于8位,则后面会跟着调色板信息,用于存储调色板的RGB值。

3. 颜色数据部分颜色数据部分即位图数据,也是BMP文件中最重要的组成部分。

位图数据按照行和列的顺序存储,每个像素用相应位数表示。

位图数据中的每个字节代表一个像素的颜色值,通常使用RGB模型来表示。

对于24位色,一个像素使用3个字节(即24位)表示,依次为红、绿和蓝。

对于8位色,一个像素只需要1个字节来表示,这就需要调色板信息来提供256种可能的颜色。

4. BMP编码规则的应用BMP编码规则在图像处理和存储中具有广泛的应用。

由于其简单易懂的文件结构,BMP格式的图像文件可以在大多数操作系统中进行读取和显示。

位图格式

位图格式

BMP格式BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。

随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。

这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。

所以,目前BMP在单机上比较流行。

目录BMP文件格式分析1bmp位图和调色板的概念RGB颜色阵列??1加载文件?1、加载文件头?12、加载位图信息头?13、行对齐?14、加载图片数据?15、绘制?16、3D(OpenGL)的不同之处?BMP文件格式分析简介BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。

Windows系统内部各图像绘制操作都是以BMP为基础的。

Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。

Windows 3.0以后的BMP图象文件与显示设备无关,因此把这种BMP 图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。

BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。

1.2 文件结构位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。

图像文件格式

图像文件格式

图像文件格式数字图象在计算机中是以文件的形式存在的。

常见的图像数据格式包括BMP格式、TIFF格式、TGA格式、GIF格式、PCX格式以及JPEG 格式等。

1.BMP格式的图像文件¾BMP是Bitmap的缩写,意为“位图”。

BMP格式的图像文件是微软公司特为Windows环境应用图像而设计的。

¾BMP格式的主要特点有:(l)BMP格式的图像文件以“.bmp”作为文件扩展名。

(2)根据需要,使用者可选择图像数据是否采用压缩形式存放。

一般情况下,BMP格式的图像是非压缩格式。

(3)当使用者决定采用压缩格式存放BMP格式的图像时,使用RLE4压缩方式,可得到16色模式的图像:若采用RLE8压缩方式,则得到256色的图像。

(4)可以多种彩色模式保存图像,如 16色、256色、24bit真彩色,最新版本的 BMP格式允许 32bit真彩色。

(5)数据排列顺序与其他格式的图像文件不同,从图像左下角为起点存储图像,而不是象传统的那样,以图像的左上角作为起点。

(6)调色板数据结构中,RGB三基色数据的排列顺序恰好与其他格式文件的顺序相反。

¾ BMP 格式的图像文件结构可以分为文件头、调色板数据以及图像数据三部分。

文件头调色板数据图像数据区图1 BMP 格式的图像文件结构¾ 图像文件大小灰度图像文件大小≈文件头+像素个数×灰度级数。

彩色图像文件大小≈文件头+像素个数×颜色数颜色数:用于表示颜色的位数。

16色(24)色 4bits256色(28)色 8bits=1byte65536(216)色 16bits=2bytes 1677万(224)色 24 bits=3bytes2.TIFF 格式的图像文件¾ TIFF 是Tag Image File Format 的缩写,它由Aldus 公司1986年就已推出,后来与微软公司联手,进一步发展了TIFF 格式,现在的版本是6.0。

BMP是什么格式?BMP文件特点及打开方式

BMP是什么格式?BMP文件特点及打开方式

BMP是一种位图文件格式,也叫做设备无关位图格式(DIB),是由微软公司开发的一种图片文件格式。

BMP格式文件保存了每个像素点的RGB值,图像保留了细节和颜色信息,但是会占用较大的存储空间,不利于网络传输和储存。

BMP格式通常用于Windows系统中的图标、位图等图形文件的存储。

BMP格式的特点1. BMP格式采用无损压缩算法,保存了每个像素点的颜色信息,通过像素点映射可以对图像还原出非常精细的细节信息。

2. BMP格式支持多种颜色模式,能够处理24位色、16位色、8位色以及黑白两种颜色模式的图像。

3. BMP格式文件由于保存了每个像素点的信息,所以文件较大,在存储和传输时会占用较大的带宽和存储空间。

4. BMP格式文件结构比较简单,只需要保存每个像素点的信息、文件头和文件信息头即可,因此可以被多种不同类型的应用程序轻松支持和读取。

BMP格式是一种可靠、简单、易于编辑和处理的文件格式,但同时也具有文件大小较大的缺点。

BMP格式的优点1. BMP格式采用无损压缩算法,保存了每个像素点的颜色信息,保证了图像的质量,不损失像素的信息,更为精细得显示图像。

2. BMP格式保存的图像具有较高的色彩深度,可以保存具有更加丰富色彩的图像,更能满足高质量图片的需求。

3. BMP格式简单明了,存储图像时方便读写。

其文件结构非常简单,只需要保存每个像素点的信息、文件头和文件信息头即可,因此可以被多种不同类型的应用程序轻松支持和读取。

4. BMP格式被广泛应用于各种不同的平台和设备,特别是在Windows系统里经常使用。

无论是应用于基于Windows的PC机还是嵌入式应用在诸如ATM机端等各类设备,BMP格式都有着良好的兼容性与共通性。

综上所述,BMP格式具有不受损图像质量、高色深图像存储、简单明了以及广泛适用等优点,使得BMP格式被广泛应用于各类应用场景中。

BMP格式的缺点1. BMP格式文件通常比其他格式的图片文件要大,这意味着它对存储空间和网络传输会带来额外的负担。

BMP格式详解

BMP格式详解

BMP格式详解BMP的4个组成部分:1.文件头信息块0000-0001:文件标识,为字母ASCII码“BM”。

0002-0005:文件大小。

0006-0009:保留,每字节以“00”填写。

000A-000D:记录图像数据区的起始位置。

各字节的信息依次含义为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)。

2.图像描述信息块000E-0011:图像描述信息块的大小,常为28H。

0012-0015:图像宽度。

0016-0019:图像高度。

001A-001B:图像的plane总数(恒为1)。

001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。

001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩0022-0025:图像区数据的大小。

0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以00H 填写。

002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以00H 填写。

002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。

3.颜色表颜色表的大小根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节。

其中,每4字节表示一种颜色,并以B (蓝色)、G(绿色)、R(红色)、alpha(32位位图的透明度值,一般不需要)。

即首先4字节表示颜色号1的颜色,接下来表示颜色号2的颜色,依此类推。

4.图像数据区颜色表接下来位为位图文件的图像数据区,在此部分记录着每点像素对应的颜色号,其记录方式也随颜色模式而定,既2色图像每点占1位(8位为1字节);16色图像每点占4位(半字节);256色图像每点占8位(1字节);真彩色图像每点占24位(3 字节)。

所以,整个数据区的大小也会随之变化。

究其规律而言,可的出如下计算公式:图像数据信息大小=(图像宽度*图像高度*记录像素的位数)/8。

BMP文件格式

BMP文件格式

I
BMP 文件格式
1 格式组成
典型的 BMP 图像文件由四部分组成: 1:位图头文件数据结构,它包含 BMP 图像文件的类型、显示内容等信息; 2:位图信息数据结构,它包含有 BMP 图像的宽、高、压缩方法,以及定义 颜色等信息; 3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真 彩色图(24 位的 BMP)就不需要调色板; 4:位图数据,这部分的内容根据 BMP 位图使用的位数不同而不同,在 24 位图中直接使用 RGB,而其他的小于 24 位的使用调色板中颜色索引值。
2 格式类型
位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。 DDB 位图在早期的 Windows 系统(Windows 3.0 以前)中是很普遍的,事实上它 也是唯一的。然而,随着显示器制造技术的进步,以及显示设备的多样化,DDB 位图的一些固有的问题开始浮现出来了。比如,它不能够存储(或者说获取)创 建这张图片的原始设备的分辨率,这样,应用程序就不能快速的判断客户机的显 示设备是否适合显示这张图片。为了解决这一难题,微软创建了 DIB 位图格式。
3 对应数据结构 ..................................................................................................... 3 4 读取方法 ............................................................................................................ 5 5 文件部分 ............................................................................................................ 6

BMP文件格式详解

BMP文件格式详解

BMP文件格式详解BMP文件是一种像素文件,它保存了一幅图象中所有的像素。

这种文件格式可以保存单色位图、16色或256色索引模式像素图、24位真彩色图象,每种模式种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节。

目前最常见的是256色BMP和24位色BMP。

这种文件格式还定义了像素保存的几种方法,包括不压缩、RLE压缩等。

常见的BMP文件大多是不压缩的。

Windows所使用的BMP文件,在开始处有一个文件头,大小为54字节。

保存了包括文件格式标识、颜色数、图象大小、压缩方式等信息,因为我们仅讨论24位色不压缩的BMP,所以文件头中的信息基本不需要注意,只有“大小”这一项对我们比较有用。

图象的宽度和高度都是一个32位整数,在文件中的地址分别为0x0012和0x0016。

54个字节以后,如果是16色或256色BMP,则还有一个颜色表,但24位色BMP没有这个,我们这里不考虑。

接下来就是实际的像素数据了。

24位色的BMP文件中,每三个字节表示一个像素的颜色。

注意,通常使用RGB来表示颜色,但BMP文件则采用BGR,就是说,顺序被反过来了。

以下为网络转载:1. BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。

2. BMP文件头BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。

其结构定义如下:typedef struct tagBITMAPFILEHEADER{WORDbfType; // 位图文件的类型,必须为BMDWORD bfSize; // 位图文件的大小,以字节为单位WORDbfReserved1; // 位图文件保留字,必须为0WORDbfReserved2; // 位图文件保留字,必须为0DWORD bfOffBits; // 位图数据的起始位置,以相对于位图// 文件头的偏移量表示,以字节为单位} BITMAPFILEHEADER;3. 位图信息头BMP位图信息头数据用于说明位图的尺寸等信息。

图形图像的存储格式

图形图像的存储格式

适合网页
设计和开


HTML、
CSS等
考虑文件大小和画质平衡
JPEG格式:适合照片和 网页图像文件较小画质中 等
PNG格式:适合透明背 景和需要保留细节的图像 文件较大画质较好
GIF格式:适合动画和简 单图像文件较小画质较差
TIFF格式:适合专业图 像和需要保留细节的图像 文件较大画质较好
BMP格式:适合 Windows系统下的图像 文件较大画质较好
图形图像的存储格式
单击添加副标题
汇报人:
目录
01
单击添加目录项标题
02
03
不同存储格式的特点
04
05
图形图像存储格式的未来发展
常见的图形图像存储格式 选择合适的存储格式
1
添加章节标题
02
常见的图形图像存储格式
BMP格式
简介:BMP(Bitmp)是一种常见的图形图像存储格式由微软公司开发。 特点:BMP格式支持多种颜色深度包括1位、4位、8位、16位、24位和32位。 应用:BMP格式广泛应用于Windows操作系统和许多图形图像处理软件中。 优点:BMP格式支持无损压缩可以保留图像的原始质量。 缺点:BMP格式的文件大小较大不适合在网络上传输和存储。
添加 标题
添加 标题
添加 标题
简介:TIFF (Tgged Imge File Formt)是一 种灵活的图像文件 格式支持多种颜色 模式、分辨率和压
缩方式。
特点:TIFF支持无 损压缩和有损压缩 可以保存图像的原 始数据适合用于专 业图像处理和印刷。
应用:TIFF广泛应 用于摄影、印刷、 出版等领域是图像 处理和印刷行业的
GIF格式
特点:支持动画和透明背景 优点:文件体积小适合网络传输 缺点:不支持真彩色颜色数量有限 应用:网页设计、动画制作、表情包等
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BMP文件格式详解(BMP file format)[图文解说]2010年05月26日星期三14:29BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。

由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。

Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。

下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。

BMP文件的数据按照从文件头开始的先后顺序分为四个部分:Ø bmp文件头(bmp file header):提供文件的格式、大小等信息Ø 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息Ø 调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表Ø 位图数据(bitmap data):就是图像数据啦^_^下面结合Windows结构体的定义,通过一个表来分析这四个部分。

我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。

因此,我们常常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位图数据了,这其实说的是24或32位图的情况。

这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。

下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。

我们使用的图像显示如下:这是一幅16位的位图文件,因此它是含有调色板的。

在拉出图像数据进行分析之前,我们首先进行几个约定:1. 在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。

如数据0x1756在内存中的存储顺序为:这种存储方式称为小端方式(little endian) , 与之相反的是大端方式(big endian)。

对两者的使用情况有兴趣的可以深究一下,其中还是有学问的。

2. 以下所有分析均以字节为序号单位进行。

下面我们对从文件中拉出来的数据进行剖析:一、bmp文件头Windows为bmp文件头定义了如下结构体:typedef struct tagBITMAPFILEHEADER{UINT16 bfType;DWORD bfSize;UINT16 bfReserved1;UINT16 bfReserved2;DWORD bfOffBits;} BITMAPFILEHEADER;其中:对照文件数据我们看到:1-2 :424dh = 'BM',表示这是Windows支持的位图格式。

有很多声称开头两个字节必须为'BM'才是位图文件,从上表来看应为开头两个字节必须为'BM'才是Windows位图文件。

3-5 :00010436h = 66614 B = 65.05 kB,通过查询文件属性发现一致。

6-9 :这是两个保留段,为0。

A-D:00000436h = 1078。

即从文件头到位图数据需偏移1078字节。

我们稍后将验证这个数据。

共有14个字节。

二、位图信息头同样地,Windows为位图信息头定义了如下结构体:代码typedef struct tagBITMAPINFOHEADER{DWORD biSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;} BITMAPINFOHEADER;对照数据文件:0E-11:00000028h = 40,这就是说我这个位图信息头的大小为40个字节。

前面我们已经说过位图信息头一般有40个字节,既然是这样,为什么这里还要给一个字段来说明呢?这里涉及到一些历史,其实位图信息头原本有很多大小的版本的。

我们看一下下表:出于兼容性的考虑,大多数应用使用了旧版的位图信息头来保存文件。

而OS/2 已经过时了,因此现在最常用的格式就仅有V3 header了。

因此,我们在前面说位图信息头的大小为40字节。

12-15:00000100h = 256,图像宽为255像素,与文件属性一致。

16-19:00000100h = 256,图像高为255像素,与文件属性一致。

这是一个正数,说明图像数据是从图像左下角到右上角排列的。

1A-1B:0001h, 该值总为1。

1C-1D:0008h = 8, 表示每个像素占8个比特,即该图像共有256种颜色。

1E-21:00000000h,BI_RGB,说明本图像不压缩。

22-25:00000000h,图像的大小,因为使用BI_RGB,所以设置为0。

26-29:00000000h,水平分辨率,缺省。

2A-2D:00000000h,垂直分辨率,缺省。

2E-31:00000100h = 256,说明本位图实际使用的颜色索引数为256,与1C-ID得到的结论一致。

32-35:00000100h = 256,说明本位图重要的颜色索引数为256,与前面得到的结论一致。

三、调色板下面的数据就是调色板了。

前面也已经提过,调色板其实是一张映射表,标识颜色索引号与其代表的颜色的对应关系。

它在文件中的布局就像一个二维数组palette[N][4],其中N表示总的颜色索引数,每行的四个元素分别表示该索引对应的B、G、R和Alpha的值,每个分量占一个字节。

如不设透明通道时,Alpha为0。

因为前面知道,本图有256个颜色索引,因此N = 256。

索引号就是所在行的行号,对应的颜色就是所在行的四个元素。

这里截取一些数据来说明:索引:(蓝,绿,红,Alpha)0号:(fe,fa,fd,00)1号:(fd,f3,fc,00)2号:(f4,f3,fc,00)3号:(fc,f2,f4,00)4号:(f6,f2,f2,00)5号:(fb,f9,f6,00) 等等。

一共有256种颜色,每个颜色占用4个字节,就是一共1024个字节,再加上前面的文件信息头和位图信息头的54个字节加起来一共是1078个字节。

也就是说在位图数据出现之前一共有1078个字节,与我们在文件信息头得到的信息:文件头到文图数据区的偏移为1078个字节一致!四、位图数据下面就是位图数据了,每个像素占一个字节,取得这个字节后,以该字节为索引查询相应的颜色,并显示到相应的显示设备上就可以了。

注意:由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。

也即我们见到的第一个像素60是图像最左下角的数据,第二个人像素60为图像最后一行第二列的数据,…一直到最后一行的最后一列数据,后面紧接的是倒数第二行的第一列的数据,依此类推。

如果图像是24位或是32位数据的位图的话,位图数据区就不是索引而是实际的像素值了。

下面说明一下,此时位图数据区的每个像素的RGB颜色阵列排布:24位RGB按照BGR的顺序来存储每个像素的各颜色通道的值,一个像素的所有颜色分量值都存完后才存下一个下一个像素,不进行交织存储。

32位数据按照BGRA的顺序存储,其余与24位位图的方式一样。

像素的排布规则与前述一致。

对齐规则讲完了像素的排列规则以及各像素的颜色分量的排列规则,最后我们谈谈数据的对齐规则。

我们知道Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。

因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。

这时,位图数据区的大小就未必是图片宽×每像素字节数×图片高能表示的了,因为每行可能还需要进行比特填充。

填充后的每行的字节数为:,其中BPP(Bits Per Pixel)为每像素的比特数。

在程序中,我们可以表示为:int iLineByteCnt = (((m_iImageWidth * m_iBitsPerPixel) + 31) >> 5) << 2;这样,位图数据区的大小为:m_iImageDataSize = iLineByteCnt * m_iImageHeight;我们在扫描完一行数据后,也可能接下来的数据并不是下一行的数据,可能需要跳过一段填充数据:skip = 4 - ((m_iImageWidth * m_iBitsPerPixel)>>3) & 3;五、拾遗至此,我们通过分析一个具体的位图文件例子详细地剖析了位图文件的组成。

需要注意的是:我们讲的主要是PC机上的位图文件的构成,对于嵌入式平台,可能在调色板数据段与PC机的不同。

如在嵌入式平台上常见的16位r5g6b5位图实际上采用的掩模的方式而不是索引的方式来表示图像。

此时,在调色板数据段共有四个部分,每个部分为四个字节,实际表示的是彩色版规范。

即:第一个部分是红色分量的掩模第二个部分是绿色分量的掩模第三个部分是蓝色分量的掩模第四个部分是Alpha分量的掩模(缺省为0)典型的调色板规范在文件中的顺序为为:00F8 0000 E007 0000 1F00 0000 0000 0000其中00F8 0000为FB00h=1111100000000000(二进制),是蓝红分量的掩码。

E007 0000为07E0h=0000011111100000(二进制),是绿色分量的掩码。

1F00 0000为001Fh=0000000000011111(二进制),是蓝色分量的掩码。

0000 0000设置为0。

将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。

看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。

取出分量值后把r、g、b值分别乘以8、4、8就可以补齐每个分量为一个字节,再把这三个字节按BGR组合,放入存储器,就可以转换为24位标准BMP格式了。

这样我们假设在位图数据区有一个像素的数据在文件中表示为02 F1。

相关文档
最新文档