bmp图片介绍

bmp图片介绍
bmp图片介绍

bmp图片

位图(BMP)文件头格式及数据分析

bmp图片

(2009-04-20 06:44:18)

转载

BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

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

[编辑本段]文件结构:

典型的BMP图像文件由四部分组成:

1:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;

2:位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;

3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;

4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。

位图的类型:

位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。DDB位图在早期的Windows系统(Windows 3.0以前)中是很普遍的,事实上它也是唯一的。然而,随着显示器制造技术的进步,以及显示设备的多样化,DDB位图的一些固有的问题开始浮现出来了。比如,它不能够存储(或者说获取)创建这张图片的原始设备的分辨率,这样,应用程序就不能快速的判断客户机的显示设备是否适合显示这张图片。为了解决这一难题,微软创建了DIB位图格式。

设备无关位图(Device-Independent Bitmap)

DIB位图包含下列的颜色和尺寸信息:

*原始设备(即创建图片的设备)的颜色格式。

*原始设备的分辨率。

*原始设备的调色板

*一个位数组,由红、绿、蓝(RGB)三个值代表一个像素。

*一个数组压缩标志,用于表明数据的压缩方案(如果需要的话)。

以上这些信息保存在BITMAPINFO结构中,该结构由BITMAPINFOHEADER结构和两个或更多个RGBQUAD结构所组成。BITMAPINFOHEADER 结构所包含的成员表明了图像的尺寸、原始设备的颜色格式、以及数据压缩方案等信息。RGBQUAD结构标识了像素所用到的颜色数据。

DIB位图也有两种形式,即:底到上型DIB(bottom-up),和顶到下型DIB(top-down)。底到上型DIB的原点(origin)在图像的左下角,而顶到下型DIB 的原点在图像的左上角。如果DIB的高度值(由BITMAPINFOHEADER结构中的biHeight成员标识)是一个正值,那么就表明这个DIB是一个底到上型DIB,如果高度值是一个负值,那么它就是一个顶到下型DIB。注意:顶到下型的DIB位图是不能被压缩的。

位图的颜色格式是通过颜色面板值(planes)和颜色位值(bitcount)计算得来的,颜色面板值永远是1,而颜色位值则可以是1、4、8、16、24、32其中的

一个。如果它是1,则表示位图是一张单色位图(译者注:通常是黑白位图,只有黑和白两种颜色,当然它也可以是任意两种指定的颜色),如果它是4,则表示这是一张VGA位图,如果它是8、16、24、或是32,则表示该位图是其他设备所产生的位图。如果应用程序想获取当前显示设备(或打印机)的颜色位值(或称位深度),可调用API函数GetDeviceCaps(),并将第二个参数设为BITSPIXEL即可。

显示设备的分辨率是以每米多少个像素来表明的,应用程序可以通过以下三个步骤来获取显示设备或打印机的水平分辨率:

1. 调用GetDeviceCaps()函数,指定第二个参数为HORZRES。

2. 再次调用GetDeviceCaps()函数,指定第二个参数为HORZSIZE。

3. 用第一个返回值除以第二个返回值。即:DetDeviceCaps(hDC,HORZRES)/GetDeviceCaps(hDC,HORZSIZE);

应用程序也可以使用相同的三个步骤来获取设备的垂直分辨率,不同之处只是要将HORZRES替换为VERTRES,把HORZSIZE替换为VERTSIZE,即可。

调色板是被保存在一个RGBQUAD结构的数组中,该结构指出了每一种颜色的红、绿、蓝的分量值。位数组中的每一个索引都对应于一个调色板项(即一个RGBQUAD结构),应用程序将根据这种对应关系,将像素索引值转换为像素RGB值(真实的像素颜色)。应用程序也可以通过调用GetDeviceCaps()函数来获取当前显示设备的调色板尺寸(将该函数的第二个参数设为NUMCOLORS即可)。

Win32 API支持位数据的压缩(只对8位和4位的底到上型DIB位图)。压缩方法是采用运行长度编码方案(RLE),RLE使用两个字节来描述一个句法,第一个字节表示重复像素的个数,第二个字节表示重复像素的索引值。有关压缩位图的详细信息请参见对BITMAPINFOHEADER结构的解释。

应用程序可以从一个DDB位图创建出一个DIB位图,步骤是,先初始化一些必要的结构,然后再调用GetDIBits()函数。不过,有些显示设备有可能不支持这个函数,你可以通过调用GetDeviceCaps()函数来确定一下(GetDeviceCaps()函数在调用时指定RC_DI_BITMAP作为RASTERCAPS的标志)。

应用程序可以用DIB去设置显示设备上的像素(译者注:也就是显示DIB),方法是调用SetDIBitsToDevice()函数或调用StretchDIBits()函数。同样,

有些显示设备也有可能不支持以上这两个函数,这时你可以指定RC_DIBTODEV作为RASTERCAPS标志,然后调用GetDeviceCaps()函数来判断该设备是否支持SetDIBitsToDevice()函数。也可以指定RC_STRETCHDIB作为RASTERCAPS标志来调用GetDeviceCaps()函数,来判断该设备是否支持StretchDIBits()函数。

如果应用程序只是要简单的显示一个已经存在的DIB位图,那么它只要调用SetDIBitsToDevice()函数就可以。比如一个电子表格软件,它可以打开一个图表文件,在窗口中简单的调用SetDIBitsToDevice()函数,将图形显示在窗口中。但如果应用程序要重复的绘制位图的话,则应该使用BitBlt()函数,因为BitBlt()函数的执行速度要比SetDIBitsToDevice()函数快很多。

设备相关位图(Device-Dependent Bitmaps)

设备相关位图(DDB)之所以现在还被系统支持,只是为了兼容旧的Windows 3.0软件,如果程序员现在要开发一个与位图有关的程序,则应该尽量使用或生成DIB格式的位图。

DDB位图是被一个单个结构BITMAP所描述,这个结构的成员标明了该位图的宽度、高度、设备的颜色格式等信息。

DDB位图也有两种类型,即:可废弃的(discardable)DDB和不可废弃的(nondiscardable)DDB。可废弃的DDB位图就是一种当系统内存缺乏,并且该位图也没有被选入设备描述表(DC)的时候,系统就会把该DDB位图从内存中清除(即废弃)。不可废弃的DDB则是无论系统内存多少都不会被系统清除的DDB。API函数CreateDiscardableBitmap()函数可用于创建可废弃位图。而函数CreateBitmap()、CreateCompatibleBitmap()、和CreateBitmapIndirect()可用于创建不可废弃的位图。

应用程序可以通过一个DIB位图而创建一个DDB位图,只要先初始化一些必要的结构,然后再调用CreateDIBitmap()函数就可以。如果在调用该函数时指定了CBM_INIT标志,那么这一次调用就等价于先调用CreateCompatibleBitmap()创建当前设备格式的DDB位图,然后又调用SetDIBits()函数转换DIB格式到DDB格式。(可能有些设备并不支持SetDIBits()函数,你可以指定RC_DI_BITMAP作为RASTERCAPS的标志,然后调用GetDeviceCaps()

函数来判断一下)。

对应的数据结构:

1:BMP文件组成

BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。

2:BMP文件头(14字节)

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

其结构定义如下:

typedef struct tagBITMAPFILEHEADER

{

WORDbf Type; // 位图文件的类型,必须为BMP(0-1字节)

DWORD bfSize; // 位图文件的大小,以字节为单位(2-5字节)

WORD bfReserved1; // 位图文件保留字,必须为0(6-7字节)

WORD bfReserved2; // 位图文件保留字,必须为0(8-9字节)

DWORD bfOffBits; // 位图数据的起始位置,以相对于位图(10-13字节)

// 文件头的偏移量表示,以字节为单位

} BITMAPFILEHEADER;

3:位图信息头(40字节)

BMP位图信息头数据用于说明位图的尺寸等信息。

typedef struct tagBITMAPINFOHEADER{

DWORD biSize; // 本结构所占用字节数(14-17字节)

LONG biWidth; // 位图的宽度,以像素为单位(18-21字节)

LONG biHeight; // 位图的高度,以像素为单位(22-25字节)

WORD biPlanes; // 目标设备的级别,必须为1(26-27字节)

WORD biBitCount;// 每个像素所需的位数,必须是1(双色),(28-29字节) // 4(16色),8(256色)或24(真彩色)之一

DWORD biCompression; // 位图压缩类型,必须是0(不压缩),(30-33字节) // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一

DWORD biSizeImage; // 位图的大小,以字节为单位(34-37字节)

LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数(38-41字节) LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数(42-45字节) DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数(46-49字节) DWORD biClrImportant;// 位图显示过程中重要的颜色数(50-53字节)

} BITMAPINFOHEADER;

4:颜色表

颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下: typedef struct tagRGBQUAD {

BYTE rgbBlue;// 蓝色的亮度(值范围为0-255)

BYTE rgbGreen; // 绿色的亮度(值范围为0-255)

BYTE rgbRed; // 红色的亮度(值范围为0-255)

BYTE rgbReserved;// 保留,必须为0

} RGBQUAD;

颜色表中RGBQUAD结构数据的个数有biBitCount来确定:

当biBitCount=1,4,8时,分别有2,16,256个表项;

当biBitCount=24时,没有颜色表项。

位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:

typedef struct tagBITMAPINFO {

BITMAPINFOHEADER bmiHeader; // 位图信息头

RGBQUAD bmiColors[1]; // 颜色表

} BITMAPINFO;

5:位图数据

位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:

当biBitCount=1时,8个像素占1个字节;

当biBitCount=4时,2个像素占1个字节;

当biBitCount=8时,1个像素占1个字节;

当biBitCount=24时,1个像素占3个字节;

Windows规定一个扫描行所占的字节数必须是

4的倍数(即以long为单位),不足的以0填充,

biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) * bi.biHeight;

具体数据举例:

如某BMP文件开头:

4D42 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... ....

BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。

一、图像文件头

1)1:(这里的数字代表的是"字",即两个字节,下同)图像文件头。0x4D42=’BM’,表示是Windows支持的BMP格式。

2)2-3:整个文件大小。4690 0000,为00009046h=36934。

3)4-5:保留,必须设置为0。

4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。

二、位图信息头

5)8-9:位图图信息头长度。

6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。

7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。

8)14:位图的位面数,该值总是1。0100,为0001h=1。

9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。1000为0010h=16。

10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。

11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于(≥位图宽度的最小的4的倍数)×位图高度×每个像素位数。0090 0000为00009000h=80×90×2h=36864。

12)20-21:用象素/米表示的水平分辨率。A00F 0000为0000 0FA0h=4000。

13)22-23:用象素/米表示的垂直分辨率。A00F 0000为0000 0FA0h=4000。

14)24-25:位图使用的颜色索引数。设为0的话,则说明使用所有调色板项。

15)26-27:对图象显示有重要影响的颜色索引的数目。如果是0,表示都重要。

三、彩色板

16)28-....(不确定):彩色板规范。对于调色板中的每个表项,用下述方法来描述RGB的值:

1字节用于蓝色分量

1字节用于绿色分量

1字节用于红色分量

1字节用于填充符(设置为0)

对于24-位真彩色图像就不使用彩色板,因为位图中的RGB值就代表了每个象素的颜色。

如,彩色板为00F8 0000 E007 0000 1F00 0000 0000 0000,其中:

00FB 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就可以补齐第个分量为一个字节,再把这三个字节按rgb组合,放入存储器(同样要反序),就可以转换为24位标准BMP格式了。

四、图像数据阵列

17)27(无调色板)-...:每两个字节表示一个像素。阵列中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。

五、存储算法

BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。例如,一个800×600的24位几乎占据1.4MB空间。因此它

们通常不适合在因特网或者其它低速或者有容量限制的媒介上进行传输。根据颜色深度的不同,图像上的一个像素可以用一个或者多个字节表示,它由n/8所确定(n是位深度,1字节包含8个数据位)。图片浏览器等基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。更为详细的信息请参阅下面关于位图文件的部分。n位2n种颜色的位图近似字节数可以用下面的公式计算:BMP文件大小约等于54+4*2的n次方+(w*h*n)/8 ,其中高度和宽度都是像素数。需要注意的是上面公式中的54是位图文件的文件头,是彩色调色板的大小。另外需要注意的是这是一个近似值,对于n位的位图图像来说,尽管可能有最多2n中颜色,一个特定的图像可能并不会使用这些所有的颜色。由于彩色调色板仅仅定义了图像所用的颜色,所以实际的彩色调色板将小于。如果想知道这些值是如何得到的,请参考下面文件格式的部分。由于存储算法本身决定的因素,根据几个图像参数的不同计算出的大小与实际的文件大小将会有一些细小的差别。

位图(BMP)文件头格式及数据分析

有了这个可以直接在单片机的LCD上显示BMP文件。

技术分类:微处理器与DSP | 2008-06-12

作者:yoyowind: EDN China

EDN博客精华文章作者:yoyowind

由于BMP文件有诸多格式,这里只以256色彩色位图为例来分析一下。

这个图是我自己用画图板做的,如下。

图1 BMP图

由于这里限制上传BMP文件,所以这个是JPG的。我的原始的BMP文件大小是200*150,文件大小是31078字节,注意看属性的时候不是占用空间大小。

在这里,我用VC编了一个程序,读入BMP文件的数据,然后分析固有的站用54个字节的文件头和信息头。

图2 文件头和信息头数据

注意:图中唯一的一条竖线是文件头14个字节和信息头40个字节的分隔线。

1、BMP文件的4个部分

BMP文件分文件头、信息头、调色板和数据区四个部分。文件头和信息头里包含一些信息,调色板顾名思义是调色的信息,数据区就是位图数据。

这里需要注意的是,为什么会有调色板呢?调色板又该有多少数据呢?我们分析一下这个文件。256色位图是用256种颜色表示整个图片信息,也就是说数据从00~FF一共256个数代表256种颜色,而大家都知道,在计算机上,颜色是用RGB来表示的,RGB分别表示红绿蓝三种颜色的分量,必须用三个字节表示,所以数据中一个字节的信息必须经过“翻译”才能得到真正的RGB颜色,所以数据区里的数据可以理解为当前相素颜色的索引号,拿着这个索引号,去调色板里找,找到的才是对应的RGB信息。

调色板的格式为:

前三个字节一看就明白了,是表示RGB信息,而最后一个字节为保留字节,不用去管。

那么,调色板需要多少数据呢?因为256种颜色对应256个颜色索引号,每个索引号必须对应1个调色板信息,所以必须有256个调色板信息,而1个调色板信息又有4个字节,所以,调色板区站用字节一共是256*4=1024字节。也就是说,从文件开头到真正的位图数据,一共间隔14+40+1024=1078字节。

2、文件头分析

文件头占14个字节,如图2所示。前两个字节“42 4d”表示“BM”两字,意思是这个文件是BMP文件;后面4个字节表示整个文件大小,经过计算00007966的对应十进制为31078,正好是本文件的字节数;再后面4个字节为保留字;最后4个字节为数据偏移量,也就是刚才计算的1078字节。

3、信息头分析

前4个字节表示记录长度,也就是信息头的长度,固定为40(0x28);后面8个字节代表图片长宽信息,表示图片是200*150的;后面两个字节为1,必须是1;后面两个字节是8,表示为8位颜色,也就是256色;后面4个字节是压缩信息,这里是0000;后面4个字节00007530是200*150得到的结果,也就是总像素数;再后面的我们就不去管了。

4、用LCD和PC显示同一位图

当然这个位图最好是灰度或者双色位图。当然调色板信息就不一样了,但是大同小异,图片大小不要超过LCD总像素数。具体编程流程是这样的。首先把文件数据发送到单片机内存,单片机编程得到数据偏移量,在数据区一一取到数据并在调色板里查到信息,将信息翻译成LCD可认格式,利用LCD 的API函数逐一写像素,就可以得到图片。这个图片的显示,应该和PC上用ACDSEE等软件打开的图片一模一样。

5、图片的后处理

当然,图片也可以进行模糊、锐化、轮廓提取、边沿检测等操作,这样就可以在单片机内编程完成而不需要VC了。我将在以后设计到这部分内容,需要的朋友请耐心等待。

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)BITMAPFILEHEADE R bmfh 位图信息头(bitmap-information header)BITMAPINFOHEADE R bmih 彩色表(color table)RGBQUAD aColors[] 图像数据阵列字节BYTE aBitmapBits[ ] 位图文件结构可综合在表6-02中。 表6-02 位图文件结构内容摘要 偏移量域的名称大小内容 图像文件头0000h标识符 (Identifie r) 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 Pointer 0002h File Size 1 dword用字节表示的整个文件的大小 0006h Reserved 1 dword保留,设置为0 000Ah Bitmap Data Offset 1 dword从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量 000Eh Bitmap Header Size 1 dword位图信息头(Bitmap Info Header)的长度,用来 描述位图的颜色、压缩方法等。下面的长度表示: 28h - Windows 3.1x, 95, NT, … 0Ch - OS/2 1.x F0h - OS/2 2.x 0012h Width 1 dword位图的宽度,以像素为单位 0016h Height 1 dword位图的高度,以像素为单位 001Ah Planes 1 word位图的位面数 图像001Ch Bits Per Pixel 1 word每个像素的位数 1 - Monochrome bitmap

C语言 BMP图片处理

C语言BMP图片处理 BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以BMP为扩展名保存。 打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。这是最普通的生成位图的工具,在这里讲解的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(像素的透明度值,一般不需要)。即首先4字节表示颜色号0的颜色,接下来表示颜色号1的颜色,依此类推。 4.图像数据区

常见医学图像格式

附录C 图像格式 译者:Synge 发表时间:2012-05-03浏览量:1604评论数:0挑错数:0 翻译:xiaoqiao 在fMRI的早期,由于大多数据都用不同研究脉冲序列采集,然后离线大量重建,而且各研究中心文件格式各不相同、大多数的分析软件也都是各研究单位内部编写运用。如果这些数据不同其他中心交流,数据的格式不影响他们的使用。因此图像格式就像巴别塔似的多式多样。随着fMRI领域的不断发展,几种标准的文件格式逐渐得到了应用,数据分析软件包的使用促进了这些文件格式在不同研究中心和实验室的广泛运用,直到近期仍有多种形式的文件格式存在。这种境况在过去的10年里随着公认的NIfTI格式的发展和广泛认可而优化。该附录就fMRI资料存储的常见问题以及重要的文件格式做一概述, 3.1 数据存储 正如第2章所述,MRI数据的存储常采用二进制数据格式,如8位或16位。因此,磁盘上数据文件的大小就是数据图像的大小和维度,如保存维度128 ×128×96的16位图像需要25,165,824位(3 兆字节)。为了保存图像的更多信息,我们希望保存原始数据,即元数据。元数据包含了图像的各种信息,如图像维度及数据类型等。这点很重要,因为可以获得二进制数据所不知道的信息,例如,图像是128 ×128×96维度的16位图像采集还是128 ×128×192维度的8位图像采集。在这里我们主要讨论不同的图像格式保存不同的数量及种类的元数据。 MRI的结构图像通常保存为三维的资料格式。fMRI数据是一系列的图像采集,可以保存为三维格式,也可以保存为四维文件格式(第4维为时间)。通常,我们尽可能保存为四维数据格式,这样可以减少文件数量,但是有些数据分析软件包不能处理四维数据。3.2 文件格式

24位BMP图像

#include #include void main() { FILE *fpIn,*fpOut; /////////////////////////// struct RGBQUAD { unsigned char rgbBlue; unsigned char rgbGreen; unsigned char rgbRed; unsigned char rgbReserved; } bicolor; char bfty[2]; short bfreserved1,biplanes,bibitcount; long bfsize,bfoffbit,bisize,biwidth,biheight; long bicompression,bisizeimage,bix,biy,biclrused,biclrimportant; char *cR; int iCol,iRow; int i,j; int iWidth; char *lpsData; int iL; short sTemp; //////////////////////////////////// fpIn=fopen("F:/课堂学习/遥感数字图像处理/data/AA","rb"); fpOut=fopen("F:/课堂学习/遥感数字图像处理/data/Tm23.bmp","wb"); //D:\??\??????????\Data\data iCol=600; iRow=600; bfty[0]='B'; bfty[1]='M'; bfsize=54+iCol*iRow*3; bfreserved1=0; bfoffbit=54; ///////////////// bisize=40; biwidth=iCol; biheight=iRow; biplanes=1; bibitcount=24; bicompression=0;

BMP图片解码

BMP图片解码 //************************************************************************** ***// //* 数码相框 //*控制芯片:ATmgea128 //*开发环境:AVR Studio+GCC //*隶属模块:位图解码 //*设计者:桃子 //************************************************************************** ***// #include "bmp.h" extern unsigned char buffer[512]; //文件系统数据缓冲 extern FATFS fs; //文件系统结构 extern FIL fl; //文件状态信息 extern FRESULT res; //文件返回值 extern unsigned int r; //文件读取数量 //**************************************************************** //*隶属模块:BMP解码 //*函数功能:小端转大端 //**************************************************************** UINT32 bmp_LE2BE(UINT8 *dat,UINT8 len) { UINT32 temp=0; if(len>= 1) temp = (UINT32)dat[0]; if(len>= 2) temp |= (UINT32)dat[1]<<8; if(len>= 3) temp |= (UINT32)dat[2]<<16; if(len>= 4) temp |= (UINT32)dat[3]<<24; return temp; } //**************************************************************** //*隶属模块:BMP解码 //*函数功能:单灰BMP解码显示 //*注意:图片宽度最好小于208 //**************************************************************** void BMP_1(unsigned int x0,unsigned int y0,unsigned char type) { unsigned int j; unsigned char k=0;

各种图片格式的区别

数码图像的基本概念 像素 像素(pixel)是计算机上用来记录图像的基本组成单位,也是组成“位图”的最小单位。“像素”数量越多,越可以表现图像细微的部分,品质和文件也会相应增加:反之“像素”数量越少,当图像放大到一定程度时,在图像边缘处容易产生失真的锯齿状(一种类似马赛克德色块)。 一般最常用的判断数码相机品质的因素就是看它的最高像素是多少。 许多不同颜色拼凑起来的“像素”所构成的集合称之为“分辨率”(resolution) 如果作品要用在杂志类高品质的纸张上,建议“分辨率”设置为300dpi以上,而一般文书报告或报纸则是150dpi,网页、多媒体等在屏幕上显示的作品设置为72~96dpi即可。 注因每张照片所含的颜色组成组成数字不同,文件的大小也不相同。一般使用在图像上的分辨率单位为ppi,指每英寸所包含的像素点;而打印机上的分辨率单位为dpi,指每英寸所包含的图点。 位图和矢量图 1、位图 位图(Raster Image)是以像素点为基础,用点的方式来记录图形中所有使用的颜色色码,像拼图一样组成整张图像。位图能真实呈现图像的原貌以及色彩上的细微差异,但放大后会产生如马赛克色块般的锯齿边缘。 2、矢量图 矢量图(V ector Image)以“数学运算”为基础,就像“两点成一条直线”的概念,这两点的距离可以是1cm,也可以10cm,所形成直线是根据两点的距离重新计算出来的,因此不会涉及“分辨率”的问题,当然也就没有“放大后会失真产生锯齿状”的问题。所以,矢量图的文件大多比位图要少,这也是为什么网络上flash矢量动画会如此盛行的一个很重要的原因。 3、位图和矢量图的应用范围 一般而言,位图适合如人物、风景、产品等这类需要表示真实图像的地方,因为“像素”可以真实地记录下所有的图像信息;而矢量图则是适合卡通、线条画等表现抽象意念的地方,因为矢量图在色彩的表现上不及位图来的细腻(尤其是在渐变色上),它无法完整地记录下图像的信息,只能用线条模拟出类似的效果,因此矢量图一般给人的印象多为仿真的感觉,不易产生像照片拍摄出来的细腻质感,但却是讲究精准的设计图最好的选择。 颜色模式 1、CMYK颜色(青色cyan、洋红magenta、黄色yellow、黑色black) 用“减色法”来混合出各种色彩,色彩,颜色在相互混合后,重叠的部分越加越暗。理论上CMY三种原色经过混色后,便能展现不同层次的灰度色彩,常应用于实际印刷的出版物中,但为求得更细腻的表现,所以特别将黑色独立出来,例如市场上销售的彩色喷墨打印机所使用的墨盒,就是应用印刷时的配色方式。 注印刷用分辨率最好在1000~3000dpi以上,才能用于大图输出。 2、RGB颜色(红red、绿green、蓝blue)——全彩图像 以“加色法”来将色彩的三原色(红、绿、蓝)混合出各种色彩,如(r255、g255、b255)会产生白色,颜色在混合后重叠的部分越加越亮。以一张24位全彩图像来说,每个像素以8位所组成,以28计算每个原色从最暗到最亮共有256种明暗变化,数值为0时最暗、255时最亮,所以共计有256*256*256近1600万种涵盖大部分肉眼可辨识的颜色。而当RGB 为最大混色时(数值皆为255),就会形成白色。

BMP图像格式详解

BMP格式图像文件详析 首先请注意所有的数值在存储上都是按“高位放高位、低位放低位的原则”,如12345678h放在存储器中就是7856 3412)。下图是导出来的开机动画的第一张图加上文件头后的16进制数据,以此为例进行分析。T408中的图像有点怪,图像是在电脑上看是垂直翻转的。在分析中为了简化叙述,以一个字(两个字节为单位,如424D就是一个字)为序号单位进行,“h”表示是16进制数。 424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 ...... BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。 一、图像文件头 1)1:图像文件头。424Dh=’BM’,表示是Windows支持的BMP 格式。

2)2-3:整个文件大小。4690 0000,为00009046h=36934。 3)4-5:保留,必须设置为0。 4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。 5)8-9:位图图信息头长度。 6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。 7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。 8)14:位图的位面数,该值总是1。0100,为0001h=1。 二、位图信息头 9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强

常用多媒体素材的类型和格式

常用多媒体素材的类型和格式 常用多媒体素材的类型有文本素材、图像素材、音频素材、视频素材、动画素材等。其中,图像素材的常见文件格式有jpg、gif、bmp等;音频素材的常见文件格式有wav、mp3、wma、mid等;视频素材的常见文件格式有wmv、rm、avi或mpg等;动画素材的常见文件格式有gif、swf等。常用多媒体素材和文件格式总结如下图所示。 下面对图片文件和视频文件进行详细介绍。 1.图片文件

在课件制作中,我们常用到的图片文件分为图形(矢量图)和图像两种。应用于多媒体教学课程中的图片格式常见的有jpg、tiff、和bmp等图像格式。 JPEG图像格式:扩展名为jpg或jpeg,其全称为Joint Photographic Experts Group。它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,其压缩比通常在10:1~40:1之间,很适合应用在网页的图像中,目前各类浏览器均支持JPEG这种图像格式。同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这种文件压缩,已广泛应用于彩色传真、静止图像、电话会议、印刷及新闻图片的传送上。但*.jpg/*.jpeg文件并不适合放大观看,输出成印刷品时品质也会受到影响。 TIFF图像格式:扩展名是tif,全名是Tagged Image File Format。它是一种非失真的压缩格式(最高也只能做到2-3倍的压缩比),能保持原有图像的颜色及层次,但占用空间却很大。TIFF常被用于较专业的用途,如书籍出版、海报等,极少应用于互联网或多媒体课件上。 GIF图像格式:扩展名是gif,全称为Graphics Interchange Format(图形交换格式)。它在压缩过程中,图像的资料不会被丢失,丢失的是图像的色彩。格式最多只能储存256色,所以通常用来显示简单图形及字体,在课件中常用来制作小动画或图形元素。 BMP图像格式:扩展名是bmp,是Windows中标准图像文件格式,已成为PC机Windows 系统中事实上的工业标准,有压缩和不压缩两种形式。它以独立于设备的方法描述位图,可用非压缩格式存储图像数据,解码速度快,支持多种图像的存储,各种PC图形图像软件都能对其进行处理。 SVG格式:扩展名是svg,全称为,意思为可缩放的矢量图形。SVG是W3C(World Wide Web ConSor—tium)在2000年8月制定的一种新的二维矢量图形格式,也是规范中的网络矢

bmp图像的读取

BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。 位图文件主要分为如下3个部分: 1、文件信息头BITMAPFILEHEADER 结构体定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 其中: 2、位图信息头BITMAPINFOHEADER

结构体定义如下: 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; 其中:

BMP头文件格式以及C语言读取头文件(二) 具体数据举例: 如某BMP文件开头: 424D 4690 0000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... .... BMP文件可分为四个部分:位图文件头、位图信息头、彩色板、图像数据阵列,在上图中已用*分隔。 一、图像文件头 1)1:(这里的数字代表的是"字",即两个字节,下同)图像文件头。424Dh=’BM’,表示是Windows支持的BMP格式。 2)2-3:整个文件大小。4690 0000,为00009046h=36934。 3)4-5:保留,必须设置为0。 4)6-7:从文件开始到位图数据之间的偏移量。4600 0000,为00000046h=70,上面的文件头就是35字=70字节。 5)8-9:位图图信息头长度。 6)10-11:位图宽度,以像素为单位。8000 0000,为00000080h=128。 7)12-13:位图高度,以像素为单位。9000 0000,为00000090h=144。 8)14:位图的位面数,该值总是1。0100,为0001h=1。 二、位图信息头 9)15:每个像素的位数。有1(单色),4(16色),8(256色),16(64K 色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。1000为0010h=16。 10)16-17:压缩说明:有0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩,3(Bitfields,位域存放)。RLE简单地说是采用像素数+像素值的方式进行压缩。T408采用的是位域存放方式,用两个字节表示一个像素,位域分配为r5b6g5。图中0300 0000为00000003h=3。 11)18-19:用字节数表示的位图数据的大小,该数必须是4的倍数,数值上等于位图宽度×位图高度×每个像素位数。0090 0000为 00009000h=80×90×2h=36864。

photoshop支持的常用图片格式及其介绍

PSD(*.PSD) PSD格式是Adobe Photoshop软件自身的格式,这种格式可以存储Photoshop中所有的图层,通道、参考线、注解和颜色模式等信息。在保存图像时,若图像中包含有层,则一般都用Photoshop(PSD)格式保存。保存后的图像将不具有任何图层。 PSD格式在保存时会将文件压缩,以减少占用磁盘空间,但PSD格式所包含图像数据信息较多(如图层、通道、剪辑路径、参考线等),因此比其他格式的图像文件还是要大得多。由于PSD文件保留所有原图像数据信息,因而修改起来较为方便,大多数排版软件不支持PSD格式的文件,必须到图像处理完以后,再转换为其他占用空间小而且存储质量好的文件格式。 BMP(*.BMP) BMP文件格式是一种Windows或OS2标准的位图式图像文件格式,它支持RGB、索引颜色、灰度和位图样式模式,但不支持Alpha通道。该文件格式还可以支持1~24位的格式,其中对于4~8位的图像,使用Run Length Encodlng(RLE.运行长度编码)压缩方案,这种压缩方案不会损失数据,是一种非常稳定的格式。BMP格式不支持CMYK模式的图像。 TIFF(*.TIf) TIFF的英文全名是Tagged Image File Format(标记图像文件格式)。它是一种无损压缩格式,TIFF格式便于应用程序之间和计算机平台之间图像数据交换。因此,TIFF格式是应用非常广泛的一种图像格式,可以在许多图像软件和平台之间转换。TIFF格式支持RGB、CMYK和灰度3种颜色模式中还支持使用通道(Channels)、图层(Layers)和裁切路径

(Paths)的功能,他可以将图像中裁切路径以外的部分在置入到排版软件中(如PageMaker)时变为透明。 在Photoshop中另存为Basic TIFF的文件格式会出现一对话框,从中可以选择PC机或Macintosh苹果机的格式,并且在保存时可以选择用LZW压缩保存的图像文件。Enhanced TIFF格式不支持裁切路径,在另存的对话框中可以选择多种压缩方式,如在Compression(压缩)下拉列表中选择LZW、ZIP和JPEG的压缩方式,以减少文件所占的磁盘空间。虽然可以减少文件大小,但会增加打开文件和存储文件的时间。也可以选择OC机或Macintosh苹果机的格式。 JPEG(*.JPG) JPEG的英文全名是Jont Picture Expert Group(联合图像专家组),它是一种有损压缩格式。此格式的图像通常用于图像预览和一些超文本文档中(HTML文档)。JPEG格式的最大特色就是文件比较小,可以进行高倍率的压缩,是目前所有格式中压缩率最高的格式之一。但是JPEG格式在压缩保存的过程中会以失量最小的方式丢掉一些肉眼不易察觉得数据。因而保存的图像与原图有所差别,没有原图的质量好,因此印刷品最好不要用此图像格式。 JPEG格式支持CMYK、RGB和灰度的颜色模式,但不支持Alpha通道。当将一个图像另存为JPEG的图像格式是,会打开JPEG Options对话框,从中可以选择图像的品质和压缩比例,通常大部分的情况下选择“最大”选择来压缩图像所产生的品质与原来图像的质量差别不大,但文件大小会减少很多。 Photoshop EPS(*.EPS) EPS格式为压缩的PostScript格式,是为在PostScript打印机上输出图像开发的格式。其最大优点在于可以在排版软件中以低分辨率预览,而在打印时以高分辨率输出。它不支持

BMP文件格式

BMP文件格式 简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Wi ndows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows 3.0以后的BMP图象文件与显示设备无关,因此把这种BM P图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBl t()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB 或.RLE作扩展名)。 此图用WinHex软件打开后结果如下:(在介绍完bmp文件格式后会具体分析这些数字,最后也有matlab对此图的分析)注:此图是24位真彩色图。 文件结构 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。

位图文件结构可综合在表6-01中。表01 位图文件结构内容摘要

构件详解 1. 位图文件头 位图文件头包含有关于文件类型、文件大小、存放位置等信息,在Windows 3.0以上版本的位图文件中用BITMAPFILEHEADER结构来定义: typedef struct tagBITMAPFILEHEADER { /* bmfh */ UINT bfType; DWORD bfSize; UINT bfReserved1; UINT bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 其中: bfType 说明文件的类型.(该值必需是0x4D42,也就是字符'BM'。我们不需要判断OS/2的位图标识,这么做现在来看似乎已经没有什么意义了,而且如果要支持OS/2的位图,程序将变得很繁琐。所以,在此只建议你检察'BM'标识) bfSize 说明文件的大小,用字节为单位bfReserved1 保留,必须设置为0

BMP图像的读写(8位和24位)

南通大学计算机科学与技术学院 《数字图像处理》课程实验 报告书 实验名 BMP文件的读写(8位和24位) 班级计 121 姓名张进 学号 1213022016 2014年6月 16 日

一、实验内容 1、了解BMP文件的结构 2、8位位图和24位位图的读取 二、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作扩展名)。 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。 位图文件结构内容摘要

BMP图像格式分析

BMP图像格式分析 BMP图像文件格式是微软公司为其Windows环境设置的标准图像格式,而且 Windows系统软件中还同时内含了一系列支持BMP图像处理的API函数,随着Windows 在世界范围内的不断普及,BMP文件格式无疑也已经成为PC机上的流行图像文件格式。它的主要特点可以概括为:文件结构与PCX文件格式类似,每个文件只能存放一幅图像;图像数据是否采用压缩方式存放,取决于文件的大小与格式,即压缩处理成为图像文件的一个选项,用户可以根据需要进行选择。其中,非压缩格式是BMP图像文件所采用的一种通用格式。但是,如果用户确定将BMP文件格式压缩处理,则Windows设计了两种压缩方式:如果图像为16色模式,则采用RLE4压缩方式,若图像为256色模式,则采用RLE8压缩方式。同时,BMP 图像文件格式可以存储单色、16色、256色以及真彩色四种图像数据,,其数据的排列顺序与一般文件不同,它以图像的左下角为起点存储图像,而不是以图像的左上角为起点;而且BMP图像文件格式中还存在另外一个与众不同的特点,即其调色板数据所采用的数据结构中,红、绿、蓝三种基色数据的排列顺序也恰好与其它图像文件格式相反。总之,BMP图像文件格式拥有许多适合于Windows环境的新特色,而且随着Windows版本的不断更新,微软公司也在不断改进其BMP 图像文件格式,例如:当前BMP图像文件版本中允许采用32位颜色表,而且针对32位Windows 的产生,相应的API 函数也在不断地报陈出新,这些无疑都同时促成了BMP文件格式的不断风靡。但由于BMP文件格式只适合于Windows上的应用软件,而对于DOS环境中的各种应用软件则无法提供相应的支持手段,因此这无疑是阻碍BMP文件格式的流通程度超过PCX文件格式的一个重要因素。 Windows中定义了两种位图文件类型,即一般位图文件格式与设备无关位图文件格式。其中,由于设备无关位图(DIB)文件格式具有更强的灵活性与完整的图像数据、压缩方式等定义。BMP图像文件的结构可以分为如下三个部分:文件头、调色板数据以及图像数据。其中文件头的长度为固定值54个字节;调色板数据对所有不超过256色的图像模式都需要进行设置,即使是单色图像模式也不例外,但是对于真彩色图像模式,其对应的BMP文件结构中却不存在相应调色板数据的设置信息;图像数据既可以采用一定的压缩算法进行处理,也可以不必对图像数据进行压缩处理,这不仅与图像文件的大小相关,而且也与对应的图像处理软件是否支持经过压缩处理的BMP图像文件相关。以下将分别介绍BMP图像文件结构中的这三个重要组成部分。特别值得注意的是:BMP 图像文件结构设计得相当简单,这无疑有利于图像文件的处理速度,但是同时也使得 BMP图像文件格式具有一定的局限性,即一个BMP图像文件只能存储一幅图像。 BMP图像文件的文件头定义 Windows中将BMP图像文件的文件头分成两个数据结构,其中一个数据结构中包含BMP文件的类型、大小和打印格式等信息,称为BITMAPFILEHEADERl另外一个数据结构中则包含BMP文件的尺寸定义等信息,称为BITMAPINFOHEADERl 如果图像文件还需要调色板数据,则将其存放在文件头信息之后。 BITMAPFIlEHEADER数据结构在Windows.h中的定义为: typedef struCttagBITMAPFIlEHEADER { WORD bftype; DWORD bfsiZe: WORD bfReservedl; WORD bgReserved2: DWORD bfoffBits: }BITMAPFILEHEADER; 其中,bfrype在图像文件存储空间中的数据地址为0,数据类型为unsignedchar,内容为固定值“BM”,用于标志文件格式,表示该图像文件为BMP文件。 bfsize的数据地址为2,类型为unsignedlong,它以字节为单位,定义位图文件的大小。 bfReservedl与bfReserved2的数据地址分别为6和8,数据类型则都为unsignedint,二者都是BMP文件的保留字,没有任何意义,其值必须为0. bfoffBits的数据地址为10,数据类型为unsignedlong,它以字节为单位,指示图像数据在文件内的起始地址,即图像数

Bmp图像存储格式

摘要:本文简单介绍了位图文件的两种存储格式,并且在VC++6.0下实现了读取位图文件中的数据,用SetPixel()函数在窗口中重现图像,最后在 程序中实现了一种存储格式到另一种存储格式的转换。 关键字:BMP、灰度位图、24位真彩色位图、存储格式 一、前言 BMP(Bitmap的缩写)图像是指文件名后缀为BMP的位图图像。位图图像在计算机中使用很广泛,例如在windows中,记事本、写字板中的文字就是用位图图像表示出来的。许多以其它格式存储的图像,就是在位图图像的基础上,进行优化处理后得到的,例如JPEG图像等。 在数字图像处理中,许多算法就是针对24位真彩色位图或灰度位图设计的。因此,很有必要介绍一下位图文件的这两种存储格式。 二、24位真彩色图像存储格式 把下图的24位真彩色图像格式在16位编辑器(例如VC编辑器)中打开,可以看到图像的二进制数据。 24位真彩色的二进制数据为: 这是24位真彩色位图文件数据一部分。这一部分数据包括位图文件头、位图信息头和位图阵列三部分。 (一)位图文件头 位图文件头用来记录标志文件大小的一些信息,在文件中占14个字节,存储的内容如下: 字节 1 2 3 4 5 6 7 8 9 10 11 12 13 14 000000 42 4D CC B4 02 00 00 00 00 00 36 00 00 00 其中: 42 4D 为位图的标志,即ASCII码为BM CC B4 02 表示位图文件的总字节数,换算成十进制为 (02B4CC)H=(177356)10,即这副图像的大小为177356字节。 00 00 00 00 00 为保留字节,用来存储文件大小的数据。 36 00 00 00 00 表示位图阵列的起始位置,(36)H=(54)10即54字节开始为位 图阵列。 (二) 位图信息头 位图信息头记录和位图相关的一些信息,在文件中占40个字节,存储的内容如下: 字节 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 00000 0 2 8 00001 6 0 2 C 1 C 5 1 1 8 00003 2 0 1 2 B 1 2 B 00004 8 0 其中:

常用图片格式分类

常见的图像文件格式又有哪些呢? 常见的图像文件格式又有哪些呢? 一、BMP格式 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。 二、GIF格式 GIF是英文Graphics Interchange Format(图形交换格式)的缩写。顾名思义,这种格式是用来交换图片的。事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。 GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF 风光十足。目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式 文件。 此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。目前Internet上大量采用的彩色动画文 件多为这种格式的文件。 但GIF有个小小的缺点,即不能存储超过256色的图像。尽管如此,这种格式仍在网络上大行其道应用,这和GIF图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等 优势是分不开的。 三、JPEG格式 JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO 10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为.jpg或.jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。 同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这

BMP图片格式详解

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作扩展名)。 二.BMP格式结构 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: ◆位图文件头(bmp file header):提供文件的格式、大小等信息 ◆位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索 引等信息 ◆调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色 的映射表 ◆位图数据(bitmap data):图像数据区 BMP图片文件数据表如下:

三.BMP文件头 BMP文件头结构体定义如下: typedef struct tagBITMAPFILEHEADER { UINT16 bfType; //2Bytes,必须为"BM",即0x424D 才是Windows位 图文件 DWORD bfSize; //4Bytes,整个BMP文件的大小 UINT16 bfReserved1; //2Bytes,保留,为0 UINT16 bfReserved2; //2Bytes,保留,为0 DWORD bfOffBits; //4Bytes,文件起始位置到图像像素数据的字节偏移量} BITMAPFILEHEADER; BMP文件头数据表如下:

相关文档
最新文档