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

BMP图像的读写(8位和24位)
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)和定义位图的字节阵列,它具有如下所示的形式。

位图文件的组成结构名称符号位图文件头(bitmap-file header) BITMAPFILEHEADER bmfh

位图信息头(bitmap-information header) BITMAPINFOHEADER bmih

彩色表(color table) RGBQUAD aColors[]

图象数据阵列字节BYTE aBitmapBits[]

位图文件结构内容摘要

偏移量域的名称大小内容

图象文件头0000h 文件标识2bytes

两字节的内容用来识别位图的类型:

‘BM’:Windows3.1x,95,NT,…

‘BA’:OS/2Bitmap Array

‘CI’:OS/2Color Icon

‘CP’:OS/2Color Pointer

‘IC’:OS/2Icon

‘PT’:OS/2Pointer

注:因为OS/2系统并没有被普及开,所以在编程时,你

只需判断第一个标识“BM”就行。

0002h File Size 1dword 用字节表示的整个文件的大小

0006h Reserved 1dword 保留,必须设置为0

000Ah Bitmap Data Offset 1dword 从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量

000Eh Bitmap Header Size 1dword 位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。下面的长度表示:

28h-Windows3.1x,95,NT,…

0Ch-OS/21.x

F0h-OS/22.x

注:在Windows95、98、2000等操作系统中,位图信息头的长度并不一定是28h,因为微软已经制定出了新的BMP 文件格式,其中的信息头结构变化比较大,长度加长。所以最好不要直接使用常数28h,而是应该从具体的文件中读取这个值。这样才能确保程序的兼容性。

0012h Width 1dword 位图的宽度,以象素为单位

0016h Height 1dword 位图的高度,以象素为单位

001Ah Planes 1word 位图的位面数(注:该值将总是1)

图象

信息

头001Ch Bits Per Pixel 1word 每个象素的位数

1-单色位图(实际上可有两种颜色,缺省情况下是黑色和白色。你可以自己定义这两种颜色)

4-16色位图

8-256色位图

16-16bit高彩色位图

24-24bit真彩色位图

32-32bit增强型真彩色位图

001Eh Compression 1dword 压缩说明:

0-不压缩(使用BI_RGB表示)

1-RLE8-使用8位RLE压缩方式(用BI_RLE8表示) 2-RLE4-使用4位RLE压缩方式(用BI_RLE4表示) 3-Bitfields-位域存放方式(用BI_BITFIELDS表示)

0022h Bitmap Data Size 1dword 用字节数表示的位图数据的大小。该数必须是4的倍数0026h HResolution 1dword 用象素/米表示的水平分辨率

002Ah VResolution 1dword 用象素/米表示的垂直分辨率

002Eh Colors 1dword 位图使用的颜色数。如8-比特/象素表示为100h或者256.

0032h Important Colors 1dword 指定重要的颜色数。当该域的值等于颜色数时(或者等于0时),表示所有颜色都一样重要

调色板数据根据

BMP版

本的不

同而不

Palette N*4byte

调色板规范。对于调色板中的每个表项,这4个字节用下

述方法来描述RGB的值:

1字节用于蓝色分量

1字节用于绿色分量

1字节用于红色分量

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

图象数据根据

BMP版

本及调

色板尺

寸的不

同而不

Bitmap Data xxx bytes

该域的大小取决于压缩方法及图像的尺寸和图像的位深

度,它包含所有的位图数据字节,这些数据可能是彩色调

色板的索引号,也可能是实际的RGB值,这将根据图像信

息头中的位深度值来决定。

三、读写涉及的原理

1、图像的二值化的基本原理

图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。

2、图像的反色原理

对于彩色图像的R、G、B各彩色分量取反的技术就是图像的反色处理,这在处理二值化图像的连通区域选取的时候非常重要。如物体连通域用黑色表示,而二值化后的物体连通域图像可那是白色的,而背景是黑色的,这时应手动选取图像的反色处理或有程序根据背景和物体连通域两种颜色的数量所占比例而自动选择是否选择选取图像的反色处理

四、读写转换代码

#include

#include

#include

#include

#include

#include

#include

#include

//---------------------------------------------------------------------------------------

//以下该模块是完成BMP图像(彩色图像是24bit RGB各8bit)的像素获取,并存在文件名为xiang_su_zhi.txt中

unsigned char *pBmpBuf;//读入图像数据的指针

int bmpWidth;//图像的宽

int bmpHeight;//图像的高

RGBQUAD *pColorTable;//颜色表指针

int biBitCount;//图像类型,每像素位数

//-------------------------------------------------------------------------------------------

//读图像的位图数据、宽、高、颜色表及每像素位数等数据进内存,存放在相应的全局变量中

bool readBmp(char *bmpName)

{

FILE *fp=fopen(bmpName,"rb");//二进制读方式打开指定的图像文件

if(fp==0)

return 0;

//跳过位图文件头结构BITMAPFILEHEADER

fseek(fp, sizeof(BITMAPFILEHEADER),0);

//定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中

BITMAPINFOHEADER head;

fread(&head, sizeof(BITMAPINFOHEADER), 1,fp); //获取图像宽、高、每像素所占位

数等信息

bmpWidth = head.biWidth;

bmpHeight = head.biHeight;

biBitCount = head.biBitCount;//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)

int lineByte=(bmpWidth * biBitCount/8+3)/4*4;//灰度图像有颜色表,且颜色表表项为256

if(biBitCount==8)

{

//申请颜色表所需要的空间,读颜色表进内存

pColorTable=new RGBQUAD[256];

fread(pColorTable,sizeof(RGBQUAD),256,fp);

}

//申请位图数据所需要的空间,读位图数据进内存

pBmpBuf=new unsigned char[lineByte * bmpHeight];

fread(pBmpBuf,1,lineByte * bmpHeight,fp);

fclose(fp);//关闭文件

return 1;//读取文件成功

}

//-----------------------------------------------------------------------------------------

//给定一个图像位图数据、宽、高、颜色表指针及每像素所占的位数等信息,将其写到指定文件中

bool saveBmp(char *bmpName, unsigned char *imgBuf, int width, int height, int biBitCount, RGBQUAD *pColorTable)

{

//如果位图数据指针为0,则没有数据传入,函数返回

if(!imgBuf)

return 0;

//颜色表大小,以字节为单位,灰度图像颜色表为1024字节,彩色图像颜色表大小为0

int colorTablesize=0;

if(biBitCount==8)

colorTablesize=1024;

//待存储图像数据每行字节数为4的倍数

int lineByte=(width * biBitCount/8+3)/4*4;

//以二进制写的方式打开文件

FILE *fp=fopen(bmpName,"wb");

if(fp==0)

return 0;

//申请位图文件头结构变量,填写文件头信息

BITMAPFILEHEADER fileHead;

fileHead.bfType = 0x4D42;//bmp类型

//bfSize是图像文件4个组成部分之和

fileHead.bfSize= sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + colorTablesize + lineByte*height;

fileHead.bfReserved1 = 0;

fileHead.bfReserved2 = 0;

//bfOffBits是图像文件前3个部分所需空间之和

fileHead.bfOffBits=54+colorTablesize;

//写文件头进文件

fwrite(&fileHead, sizeof(BITMAPFILEHEADER),1, fp);

//申请位图信息头结构变量,填写信息头信息

BITMAPINFOHEADER head;

head.biBitCount=biBitCount;

head.biClrImportant=0;

head.biClrUsed=0;

head.biCompression=0;

head.biHeight=height;

head.biPlanes=1;

head.biSize=40;

head.biSizeImage=lineByte*height;

head.biWidth=width;

head.biXPelsPerMeter=0;

head.biYPelsPerMeter=0;

//写位图信息头进内存

fwrite(&head, sizeof(BITMAPINFOHEADER),1, fp);

//如果灰度图像,有颜色表,写入文件

if(biBitCount==8)

fwrite(pColorTable, sizeof(RGBQUAD),256, fp); //写位图数据进文件

fwrite(imgBuf, height*lineByte, 1, fp);

//关闭文件

fclose(fp);

return 1;

}

//----------------------------------------------------------------------------------------

//以下为像素的读取函数

void doIt()

{

//读入指定BMP文件进内存

char readPath[]="D:\\pic\\24dog.BMP";

readBmp(readPath);

//输出图像的信息

cout<<"width="<

if(biBitCount==8) //对于灰度图像

{

//------------------------------------------------------------------------------------

//以下完成图像的分割成8*8小单元,并把像素值存储到指定文本中。由于BMP图像的像素数据是从

//左下角:由左往右,由上往下逐行扫描的

int L1=0;

int hang=63;

int lie=0;

//int L2=0;

//int fen_ge=8;

for(int fen_ge_hang=0;fen_ge_hang<8;fen_ge_hang++)//64*64矩阵行循环 {

for(int fen_ge_lie=0;fen_ge_lie<8;fen_ge_lie++)//64*64列矩阵循环 {

//--------------------------------------------

for(L1=hang;L1>hang-8;L1--)//8*8矩阵行

{

for(int L2=lie;L2

{

m=*(pBmpBuf+L1*lineByte+L2);

outfile<

count_xiang_su++;

if(count_xiang_su%8==0)//每8*8矩阵读入文本文件

{

outfile<

}

}

}

//---------------------------------------------

hang=63-fen_ge_hang*8;//64*64矩阵行变换

lie+=8;//64*64矩阵列变换

//该一行(64)由8个8*8矩阵的行组成

}

hang-=8;//64*64矩阵的列变换

lie=0;//64*64juzhen

}

}

//double xiang_su[2048];

//ofstream outfile("xiang_su_zhi.txt",ios::in|ios::trunc);

if(!outfile)

{

cout<<"open error!"<

exit(1);

}

else if(biBitCount==24)

{//彩色图像

for(int i=0;i

{

for(int j=0;j

{

for(int k=0;k<3;k++)//每像素RGB三个分量分别置0才变成黑色

{

//*(pBmpBuf+i*lineByte+j*3+k)-=40;

m=*(pBmpBuf+i*lineByte+j*3+k);

outfile<

count_xiang_su++;

if(count_xiang_su%8==0)

{

outfile<

}

//n++;

}

n++;

}

}

cout<<"总的像素个素为:"<

cout<<"----------------------------------------------------"<

}

//将图像数据存盘

char writePath[]="D:\\pic\\24newdog.BMP";//图片处理后再存储

saveBmp(writePath, pBmpBuf, bmpWidth, bmpHeight, biBitCount, pColorTable); //清除缓冲区,pBmpBuf和pColorTable是全局变量,在文件读入时申请的空间

delete []pBmpBuf;

if(biBitCount==8)

delete []pColorTable;

}

void main()

{

doIt();

}

五、运行结果

24位位图 24dog.bmp如下:

原图像的属性:

读取结果:

生成的新图片:

8位位图读取 8dog.bmp如下

图片属性:

读取的结果:

生成的新图片:

六、心得体会

大一学的c++,现在却发现忘得差不多了,在程序实现上遇到了困难。但是本次实验确实又再一次的让我接触了c语言。

这次实验掌握了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)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

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格式图像文件详析 首先请注意所有的数值在存储上都是按“高位放高位、低位放低位的原则”,如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色,增强

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。

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(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图像格式分析

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图像格式详解 一.简介 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文件头数据表如下:

图像文件格式BMP文件格式详解

5.2 BMP文件格式 BMP文件格式是Microsoft Windows下最常见的图像文件格式之一,它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。 5.2.1典型的BMP图像文件由四部分组成: 1、位图头文件数据结构 主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息; 2、位图信息数据结构 包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息; 3、调色板 包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。 4、位图数据 记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序是 在扫描行内是从左到右, 扫描行之间是从下到上。这种格式我们又称为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位图,也不存在压缩形式。 5.2.2 BMP文件结构 位图文件(bitmap file, BMP)格式是Windows采用的图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。Windows3.0以后的BMP格式与显示设备无关,因此把这种BMP格式称为设备无关位图(Device Independentbit Bitmap , DIB)格式,Windows能够在任何类型的显示设备上显示BMP位图。BMP位图默认的文件扩展名是bmp。 1、文件结构 位图文件可看成由4个部分组成:位图文件头(Bitmap-File)、位图信息头 (Bitmap-Information Header)、彩色表(Color Table)和定义位图的字节阵列,它们的名称

BMP图像由彩图变为灰度图

Date:6月21日 任务:BMP真彩图像转为灰度图 一,算法及公式: 1,什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 浮点算法:Gray=R*0.3+G*0.59+B*0.11 整数方法:Gray=(R*30+G*59+B*11)/100 移位方法:Gray =(R*28+G*151+B*77)>>8; 平均值法:Gray=(R+G+B)/3; 仅取绿色:Gray=G; 通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。 2,改变象素矩阵的RGB值,来达到彩色图转变为灰度图 加权平均值算法:根据光的亮度特性,其实正确的灰度公式应当是 R=G=B=R*0.299+G*0.587+B0.144 为了提高速度我们做一个完全可以接受的近似,公式变形如下: R=G=B=(R*3+G*6+B)/10 3,真正的24位真彩图与8位的灰度图的区别就在于,真彩图文件中没有调色板,灰度图有调色板,真彩图中的象素矩阵是RGB值,

灰度图中的象素矩阵是调色板索引值。源代码1只简单的改变象素矩阵的RGB值,来达到彩色图转为灰度图,并没有添加调色板。源代码2添加了调色板。 二,源代码 1, //可以输入文件名的源代码,有些变量定义进行了完善 #include "stdio.h" #include "stdlib.h" #include "string.h" #include "windows.h" #include "conio.h" typedef struct{ unsigned char b; unsigned char r; unsigned char g; }pixel; pixel a[640][480]; unsigned char aa[640][480]; void main() { BITMAPFILEHEADER FILEH;

BMP图片处理--C语言

BMP图片处理--C语言(存储于读写) (2009-10-19 15:32:29) 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,表示所有颜色一样重要。

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其中的

BMP图像文件读写

1、图像格式介绍,见“图像处理2PPT) 2、BMP图像读入、显示、处理、保存例程见下。

#define ff(i,j) ip[(i)*lx+(j)] void CWaveletDemoView::OnBMPwavelet() { // TODO: Add your command handler code here CImage * myimg; myimg=new CImage;//call member function by object pointer BITMAPFILEHEADER bfh;//文件头 BITMAPINFOHEADER bif;//信息头 char filename1[50]; char filename2[50]; char filename3[50]; unsigned char * rgbquad; unsigned char * ip;//origin image short int * jp;//wavelet transformed short int * ip1; unsigned char * ajp; //------------------------------------- strcpy(filename2,""); strcpy(filename2,"lena1b1.bmp");//当前目录下存放 //-------------------------------------- /* strcpy(filename2,""); strcpy(filename2,"E:\\WZF\\lena1b.bmp"); */ //*******reagding image file************** DWORD m_dwLength;//reading file length DWORD m_dwLength1;//writing file length //=======由对话框得到文件路径名字FilePathName //--------------------------------- CString strOpenFileType = "图像文件 (*.BMP)|*.BMP; |All Files (*.*)|*.*||";//raw CString FilePathName; CFileDialog dlg(TRUE, "*.BMP", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strOpenFileType);///TRUE为OPEN对话框,FALSE为SAVE AS对话框 if(dlg.DoModal()==IDOK) { FilePathName=dlg.GetPathName(); } else { AfxMessageBox("请选择一个.BMP文件");

BMP图像结构

BMP文件结构详解 2008-11-02 13:26 1. BMP文件组成 BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组2. BMP文件头 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起其结构定义如下: typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位WORDbfReserved1; // 位图文件保留字,必须为0 WORDbfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图 // 文件头的偏移量表示,以字节为单位 } BITMAPFILEHEADER; 3. 位图信息头 BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{

DWORD biSize; // 本结构所占用字节数 LONGbiWidth; // 位图的宽度,以像素为单位 LONGbiHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的级别,必须为1 WORD biBitCount// 每个像素所需的位数,必须是1(双色), // 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; // 位图压缩类型,必须是0(不压缩), // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; // 位图的大小,以字节为单位LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数DWORD biClrImportant;// 位图显示过程中重要的颜色数 } BITMAPINFOHEADER; 4. 颜色表 颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一构,定义一种颜色。RGBQUAD结构的定义如下: typedef struct tagRGBQUAD { BYTErgbBlue;// 蓝色的亮度(值范围为0-255) BYTErgbGreen; // 绿色的亮度(值范围为0-255)

bmp图像大小

需要掌握3个知识:1.图像和视频的容量公式;2.8位=1字节(8b=1B)单位换算;3.千数量级跨度;(分辨率)*位深度(单位:位)(分辨率)*位深度; 2.题目告诉你图像用多少种颜色,我们需要用:n位;4n的值,n就是位深度;AVI视频容量计算公式:;一共有多少像素点*每个点是多少位*一共有几张图片;(分辨率)*位深度*(帧频*时间)(单位:位)(;一、给你 需要掌握3个知识:1.图像和视频的容量公式 2.8位=1字节(8b=1B)单位换算 3.千数量级跨度。1kB=1024B、1MB=1024KB、1GB=1024MB、1TB=1024GB BMP 图像容量计算公式:一共有多少像素点 * 每个点是几位 (分辨率) * 位深度 (单位:位) (分辨率) * 位深度 /8 (单位:字节)(分辨率) * 位深度 /8/1024 (单位:KB) (分辨率) * 位深度 /8/1024/1 024 (单位:MB) 位深度:1.题目直接告诉你用多少位,比如16位色、24位色等 2.题目告诉你图像用多少种颜色,我们需要用:n位能表示2的n次个信息,算出 4n的值,n就是位深度。如告诉你16色,16=2,所以就是4位 AVI视频容量计算公式: 一共有多少像素点 * 每个点是多少位 * 一共有几张图片

(分辨率) * 位深度 * (帧频*时间) (单位:位) (分辨率) * 位深度* (帧频*时间)/8 (单位:字节) (分辨率) * 位深度 * (帧频*时间)/8/1024 (单位:KB) (分辨率) * 位深度 * (帧频*时间)/8/1024/1024 (单位:MB) 一、给你位深度,计算图像大小 使用一个存储容量为1024MB的U盘,来存储未经压缩的1280×968像素、3 2位色BMP图像,可以存储这种图像大约为C A. 800张 B. 400张 C. 200张 D. 20张 将一幅未经压缩的1280×968像素、8位色BMP图片,转换成JPEG格式后,存储容量为43.2KB,则压缩比约为A A. 28:1 B. 18:1 C. 8:1 D. 4:1 一幅未经压缩的1024×768像素、16位色BMP图像,其存储容量约为B A. 468KB B. 1.5MB C. 2.4MB D. 3.7MB 用“画图”程序将1024×768像素、16位色BMP图片,转换成JPEG格式后,存储容量为90.1KB,则压缩比为 A. 136:1 B. 34:1 C. 17:1 D. 8:1 用“画图”程序将1024×768像素、24位色未经压缩图像“a.bmp”文件分别另存为256色位图“b.bmp”文件和单色位图“c.bmp”文件,则3个文件存储容量之比约为 A. 24:8:1 B. 12:4:1 C. 24:256:1 D. 1:1:

BMP图片与JPG图片的区别

BMP图片与JPG图片的区别 BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。 典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。 JPEG是JointPhotographicExpertsGroup(联合图像专家组)的缩写,文件后辍名为".jpg"或".jpeg",是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb 的BMP位图文件压缩至20.3KB。当然也可以在图像质量和文件尺寸之间找到平衡点。JPEG 格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。 JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以0—10级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10级质量保存时,压缩比也可达5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。 JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快。 JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。JPEG2000格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000还支持

相关主题
相关文档
最新文档