32位bmp文件头|BMP图片格式具体是什么

㈠ bmp是什么格式bmp文件格式怎么打开

bmp是一种图片格式,可以用电脑自带的照片查看器或画图软件打开,演示电脑系统版版本为windows7,具体操作请参照权以下步骤。

1、首先在电脑上找到目标bmp格式的文件,用鼠标选中。

㈡ 关于BMP文件头数据解读的疑问

这是位图文件头结构体:typedef struct bmp_header { unsigned short bfType; //文件的类型,该值必需是0x4D42,也就是字符'BM' unsigned int bfSize; //说明文件的大小,用字节为单位 unsigned short bfReserved1; //保留,必须设置为0 unsigned short bfReserved2; //保留,必须设置为0 unsigned int bfOffBits; //说明从文件头开始到实际的图象数据之间的字节的偏移量}BMPHEADER; 由于存放文件大小的变量bfSize为int型,即4个字节(32位和64位机器都是),然后你列出来的文件数据是从低地址到高地址的,而数据的存储当然是高位的存在高地址,低位的存在低地址,即4690 0000应该倒过来读,为0000 9046,也就是36934字节。 至于你说的后面的“H”,我不晓得你说的是哪里的“H”。

㈢ 典型的BMP图像文件由哪3部分组成

位图文件头数据结构,包含BMP图像文件的类型、显示内容等信息,位图信息数据结构,包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。

通常看到的bmp图像文件一般都比较大,占用很大的空间。因为除了位像深度可选以外,其他不采用任何压缩。Bmp文件存储数据时,图像的扫描方式是按从左到右,从下到上的顺序。

(3)32位bmp文件头扩展阅读:

BMP图像文件注意事项:

用户需要注意位图信息头BITMAPINFOHEADER中表示图象高度的成员变量biHeight指明该图像是倒向的位图,还是正向的位图。

用户需要注意如果biHeight 的值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的,大多数的BMP文件都是倒向的位图,也就是高度值是一个正数。

由于Windows在进行行扫描的时候最小的单位为4个字节,所以当图像宽度* 每个像素的字节数 != 4的整数倍时要在每行的后面补上缺少的字节,以0填充。

㈣ bmp格式怎么看

bmp文件大体上分成四个部分,如图1.3所示。位图文件头BITMAPFILEHEADER位图信息头BITMAPINFOHEADER调色板Palette实际的位图数据ImageDate第一部分为位图文件头BITMAPFILEHEADER,是一个结构,其定义如下:typedef struct tagBITMAPFILEHEADER {WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 这个结构的长度是固定的,为14个字节(WORD为无符号16位整数,DWORD为无符号32位整数),各个域的说明如下:bfType指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM”。bfSize指定文件大小,包括这14个字节。bfReserved1,bfReserved2 为保留字,不用考虑bfOffBits为从文件头到实际的位图数据的偏移字节数,即图1.3中前三个部分的长度之和。第二部分为位图信息头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; 这个结构的长度是固定的,为40个字节(LONG为32位整数),各个域的说明如下:biSize指定这个结构的长度,为40。biWidth指定图象的宽度,单位是象素。biHeight指定图象的高度,单位是象素。biPlanes必须是1,不用考虑。biBitCount 指定表示颜色时要用到的位数,常用的值为1(黑白二色图), 4(16色图), 8(256色), 24(真彩色图)(新的.bmp格式支持32位色,这里就不做讨论了)。biCompression指定位图是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS(都是一些Windows定义好的常量)。要说明的是,Windows位图可以采用RLE4,和RLE8的压缩格式,但用的不多。我们今后所讨论的只有第一种不压缩的情况,即biCompression为BI_RGB的情况。biSizeImage指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:biSizeImage=biWidth’ × biHeight要注意的是:上述公式中的biWidth’必须是4的整倍数(所以不是biWidth,而是biWidth’,表示大于或等于biWidth的,最接近4的整倍数。举个例子,如果biWidth=240,则biWidth’=240;如果biWidth=241,biWidth’=244)。如果biCompression为BI_RGB,则该项可能为零biXPelsPerMeter指定目标设备的水平分辨率,单位是每米的象素个数,关于分辨率的概念,我们将在第4章详细介绍。biYPelsPerMeter指定目标设备的垂直分辨率,单位同上。biClrUsed指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为2biBitCount。biClrImportant指定本图象中重要的颜色数,如果该值为零,则认为所有的颜色都是重要的。第三部分为调色板Palette,当然,这里是对那些需要调色板的位图文件而言的。有些位图,如真彩色图,前面已经讲过,是不需要调色板的,BITMAPINFOHEADER后直接是位图数据。调色板实际上是一个数组,共有biClrUsed个元素(如果该值为零,则有2biBitCount个元素)。数组中每个元素的类型是一个RGBQUAD结构,占4个字节,其定义如下:typedef struct tagRGBQUAD { BYTE rgbBlue; //该颜色的蓝色分量BYTE rgbGreen; //该颜色的绿色分量BYTE rgbRed; //该颜色的红色分量BYTE rgbReserved; //保留值} RGBQUAD; 第四部分就是实际的图象数据了。对于用到调色板的位图,图象数据就是该象素颜在调色板中的索引值。对于真彩色图,图象数据就是实际的R、G、B值。下面针对2色、16色、256色位图和真彩色位图分别介绍。对于2色位图,用1位就可以表示该象素的颜色(一般0表示黑,1表示白),所以一个字节可以表示8个象素。对于16色位图,用4位可以表示一个象素的颜色,所以一个字节可以表示2个象素。对于256色位图,一个字节刚好可以表示1个象素。对于真彩色图,三个字节才能表示1个象素,哇,好费空间呀!没办法,谁叫你想让图的颜色显得更亮丽呢,有得必有失嘛。要注意两点:(1) 每一行的字节数必须是4的整倍数,如果不是,则需要补齐。这在前面介绍biSizeImage时已经提到了。(2) 一般来说,.bMP文件的数据从下到上,从左到右的。也就是说,从文件中最先读到的是图象最下面一行的左边第一个象素,然后是左边第二个象素……接下来是倒数第二行左边第一个象素,左边第二个象素……依次类推 ,最后得到的是最上面一行的最右一个象素。

㈤ BMP格式文件的数据结构

BMP是一种与硬件设备无关的图像文件格式,其支持1,4,8,16,24,32位的图像存储,并且支持非压缩和压缩这两种存储方式,数据是以Little Endian依次存储。由于历史的原因,存在Windows和OS/2两种类型的BMP,目前Windows类型的BMP基本上可是说是事实上的标准,下面均以此类型BMP文件为例,其文件主要由以下3部分组成: (1)文件头和信息头 typedef struct _tag_BMP_FILEHEADER{ WORD bfType; //2Bytes,必须为"BM",即0x424D DWORD bfSize; //4Bytes,整个BMP文件的大小 WORD bfReserved1; //2Bytes,保留字,可设为0 WORD bfReserved2; //2Bytes,保留字,可设为0 DWORD bfOffBits; //4Bytes,文件起始位置到图像像素数据的偏移 } BMP_FILEHEADER; typedef struct _tagBMP_INFOHEADER{ DWORD biSize; //4Bytes,INFOHEADER结构体大小,存在其他版本INFOHEADER,用作区分 LONG biWidth; //4Bytes,图像宽度(以像素为单位) LONG biHeight; //4Bytes,图像高度,+:图像存储顺序为Bottom2Top,-:Top2Bottom WORD biPlanes; //2Bytes,图像数据平面,BMP存储RGB数据,因此总为1 WORD biBitCount; //2Bytes,图像像素位数 DWORD biCompression; //4Bytes,0:不压缩,1:RLE8,2:RLE4 DWORD biSizeImage; //4Bytes,4字节对齐的图像数据大小 LONG biXPelsPerMeter; //4 Bytes,用象素/米表示的水平分辨率 LONG biYPelsPerMeter; //4 Bytes,用象素/米表示的垂直分辨率 DWORD biClrUsed; //4 Bytes,实际使用的调色板索引数,0:使用所有的调色板索引 DWORD biClrImportant; //4 Bytes,重要的调色板索引数,0:所有的调色板索引都重要 } BMP_INFOHEADER; (2)调色板数据(可选) 1,4,8位图像会使用调色板数据,其它不需要调色板数据,即调色板最多只需要256项(索引0 – 255),调色板数据通常采用如下数据结构: typedef struct _tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; (3)图像像素数据; 采用四字节对齐存放的方式。

㈥ 关于bmp格式的文件中的文件头

BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BblP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。 典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。JPEG是Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为".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还支持所谓的"感兴趣区域" 特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。 JPEG2000和JPEG相比优势明显,且向下兼容,因此可取代传统的JPEG格式。JPEG2000即可应用于传统的JPEG市场,如扫描仪、数码相机等,又可应用于新兴领域,如网路传输、无线通讯等等。

㈦ 关于bmp文件头的问题

实例我没有的,毕竟这玩意不是说做就能做出来。以前弄过,早忘光了。相关信息倒是有。http://blog.csdn.net/LaPizza/archive/2008/11/06/3235318.aspx他这个是各部分的中文介绍。详细的介绍,在这里,需要修改的地方我用绿字标注了http://selaselah.spaces.live.com/blog/cns!F8BCC85A4BB085B8!622.entry你找一个bitmap的类库,然后读入图像,就可以修改对应的数据了。如果不想找这样的类库,就用C++自己写吧。MFC中也有对应的类库,可以直接使用。

㈧ bmp格式的图片的最大尺寸(分辨率)是多少

吃我一记洛阳铲~BMP的文件中,文件头写明了BMP的大小,用的是DWORD记录大小,即unsignedlong类型,4字节32位,故最大是2^32bit=4GB。而这4GB中,前14字节是文件头信息,加上40个图片头信息,共54字节。后面是调色板信息,这个可以是0可以是很多个,有兴趣的自己去查查,反正我们取最小是0。

㈨ 纯c/c++如何读取和写入带alpha通道32位bmp图片不借用VC的MFC的类 请高手指导 希望能给示例程序。

BITMAPFILEHEADER bfh;// bmp文件头BITMAPINFOHEADER bih;// bmp头信息直接以二进制文件打开bmp,然后读取位图头部头。。。BITMAPFILEHEADER bfh;// bmp文件头BITMAPINFOHEADER bih;// bmp头信息RGBQUAD rq[256];// 调色板int i=0,j=0;int nAdjust; // 用于字节对齐int nAdjust24; // 用于字节对齐int nSize;BYTE *data= NULL;//new BYTE[bih.biWidth*bih.biHeight];BYTE *pData24 = NULL;//new BYTE[bih.biWidth*bih.biHeight];int nComponent = 0;// 打开图像文件FILE *f = fopen(strSourceFileName,"rb");if (f==NULL){printf("Open file error!\n");return;}// 读取文件头fread(&bfh,sizeof(bfh),1,f);// 读取图像信息fread(&bih,sizeof(bih),1,f);// 8位字节对齐nAdjust = bih.biWidth%4;if (nAdjust) nAdjust = 4-nAdjust;// 24位字节对齐nAdjust24 = bih.biWidth*3%4;if (nAdjust24) nAdjust24 = 4-nAdjust24;switch (bih.biBitCount) {case 8:if (bfh.bfOffBits-1024<54) {fclose(f);return;}data= new BYTE[(bih.biWidth+nAdjust)*bih.biHeight];pData24 = new BYTE[(bih.biWidth*3+nAdjust24)*bih.biHeight];// 定位调色板,并读取调色板fseek(f,bfh.bfOffBits-1024,SEEK_SET);fread(rq,sizeof(RGBQUAD),256,f);// 读取位图fread(data,bih.biWidth*bih.biHeight,1,f);fclose(f);nComponent = 3;for (j=0;j<bih.biHeight;j++) {for (i=0;i<bih.biWidth;i++){pData24[j*(bih.biWidth*3+nAdjust24)+i*3] = rq[data[j*(bih.biWidth+nAdjust)+i]].rgbRed;pData24[j*(bih.biWidth*3+nAdjust24)+i*3+1] = rq[data[j*(bih.biWidth+nAdjust)+i]].rgbGreen;pData24[j*(bih.biWidth*3+nAdjust24)+i*3+2] = rq[data[j*(bih.biWidth+nAdjust)+i]].rgbBlue;}}break;case 24:{data= new BYTE[(bih.biWidth*3+nAdjust24)*bih.biHeight];pData24 = new BYTE[(bih.biWidth*3+nAdjust24)*bih.biHeight];fseek(f,bfh.bfOffBits,SEEK_SET);fread(data,(bih.biWidth*3+nAdjust24)*bih.biHeight,1,f);fclose(f);for (j=0;j<bih.biHeight;j++){for (i = 0;i<bih.biWidth;i++){pData24[j*(bih.biWidth*3+nAdjust24)+i*3] = data[j*(bih.biWidth*3+nAdjust24)+i*3+2];pData24[j*(bih.biWidth*3+nAdjust24)+i*3+1] = data[j*(bih.biWidth*3+nAdjust24)+i*3+1];pData24[j*(bih.biWidth*3+nAdjust24)+i*3+2] = data[j*(bih.biWidth*3+nAdjust24)+i*3];}}nComponent = 3;break;}default:fclose(f);return;}// 以上图像读取完毕 // 以下做其它处理,注意用完后要释放已申请的内存

㈩ BMP图片格式具体是什么

BMP图片格式的介绍:

BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。

Windows系统内部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。

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

BMP文件的数据按照从文件头开始的先后顺序分为四个部分

位图文件头(bmp file header): 提供文件的格式、大小等信息。

位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息

调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表

位图数据(bitmap data):图像数据区


赞 (0)