BMP32位的32位位图格式式是什么样的

图片格式有哪些 常见图片格式介绍
作者:佚名
字体:[ ] 来源:互联网 时间:09-02 14:49:16
网络中充斥着各种七彩的图片,对于很多电脑族来说,接触到最多的图片格式应该属于JPG、gif以及png图片格式吧。
今天有网友问到小编这样一个问题,由于以后自己进入大学想学设计,对于一些图片设计特感兴趣,现在想了解下图片有哪些格式,各有什么特点,针对这个问题,笔者为其总结如下,希望对大家同样也有帮助1)BMP图片格式:Windows系统下的标准位图格式,使用很普遍。其结构简单,未经过压缩,一般图像文件会比较大。它最大的好处就是能被大多数软件&接受&,可称为通用格式。 2)JPEG(jpg)图片格式:也是应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,将不易被人眼察觉的图像颜色删除,从而达到较大的压缩比(可达到2:1甚至40:1),所以&身材娇小,容貌姣好&,特别受网络青睐。 3)GIF图片格式:分为静态GIF和动画GIF两种,支持透明背景图像,适用于多种操作系统,&体型&很小,网上很多小动画都是GIF格式。其实GIF是将多幅图像保存为一个图像文件,从而形成动画,所以归根到底GIF仍然是图片文件格式。 4)PNG图片格式:(Portable Network Graphics可移植的网络图形)与JPG格式类似,网页中有很多图片都是这种格式,压缩比高于GIF,支持图像透明,可以利用Alpha通道调节图像的透明度。 你可能会喜欢
5)PSD图片格式:图像处理软件&大哥大&Photoshop的专用图像格式,图像文件一般较大。 6)PCX图片格式:ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式,存储格式从1位到24位。它是经过压缩的格式,占用磁盘空间较少,并具有压缩及全彩色的优点。 7)DXF图片格式:三维模型设计软件AutoCAD的专用格式,文件小,所绘制的图形尺寸、角度等数据十分准确,是建筑设计的首选。 8)CDR图片格式:著名的图形设计软件&&CorelDRAW的专用格式,属于矢量图像,最大的优点&体重&很轻,便于再处理。 9)ICO图片格式:ico格式属于图标文件,与普通图片不同,它不支持在电脑中直接打开查看,主要用于网站网址前面的标识图标,一把知名网站都有这个标识,我们再浏览网站的时候,细心的朋友会发现网址前面有个图标,这个就是ico图标文件,如下图: 知名网站网址前一般均有ico图标文件 多用于软件的图标,我们经常看到不同的软件不同的图标就是ico实现的。 看了这篇文章可能你就能了解的更多了,看别人是如何制作图片的(ps就是传说中的photoshop)以上就是一些比较常见的图片格式介绍,希望对电脑爱好者童鞋们多了解下相关电脑知识,如果还有疑问,请在下面的评论中指出。
大家感兴趣的内容
12345678910
最近更新的内容typedef&struct&tagBITMAPFILEHEADER&{&&UINT16&bfT&&&&DWORD&bfS&UINT16&bfReserved1;&UINT16&bfReserved2;&DWORD&bfOffB}&BITMAPFILEHEADER;&
&对照文件数据我们看到:
1-2&:424dh = 'BM',表示这是Windows支持的位图格式。有很多声称开头两个字节必须为'BM'才是位图文件,从上表来看应为开头两个字节必须为'BM'才是Windows位图文件。
3-5&:h = 66614 B = 65.05 kB,通过查询文件属性发现一致。
6-9&:这是两个保留段,为0。
A-D:h = 1078。即从文件头到位图数据需偏移1078字节。我们稍后将验证这个数据。
共有14个字节。
二、位图信息头同样地,Windows为位图信息头定义了如下结构体:
typedef&struct&tagBITMAPINFOHEADER&{DWORD&biS&LONG&biW&LONG&biH&WORD&biP&WORD&biBitC&DWORD&biC&DWORD&biSizeI&LONG&biXPelsPerM&LONG&biYPelsPerM&DWORD&biClrU&DWORD&biClrI}&BITMAPINFOHEADER;&
对照数据文件:&
0E-11:h = 40,这就是说我这个位图信息头的大小为40个字节。前面我们已经说过位图信息头一般有40个字节,既然是这样,为什么这里还要给一个字段来说明呢?这里涉及到一些历史,其实位图信息头原本有很多大小的版本的。我们看一下下表:
&&&&&&&&&&&&&& &
& & 出于兼容性的考虑,大多数应用使用了旧版的位图信息头来保存文件。而 OS/2 已经过时了,因此现在最常用的格式就仅有V3 header了。因此,我们在前面说位图信息头的大小为40字节。
12-15:h = 256,图像宽为255像素,与文件属性一致。
16-19:h = 256,图像高为255像素,与文件属性一致。这是一个正数,说明图像数据是从图像左下角到右上角排列的。
1A-1B:0001h, 该值总为1。
1C-1D:0008h = 8, 表示每个像素占8个比特,即该图像共有256种颜色。
1E-21:h,BI_RGB, 说明本图像不压缩。
22-25:h,图像的大小,因为使用BI_RGB,所以设置为0。
26-29:h,水平分辨率,缺省。
2A-2D:h,垂直分辨率,缺省。
2E-31:h = 256,说明本位图实际使用的颜色索引数为256,与1C-ID得到的结论一致。
32-35:h = 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_iImageH
我们在扫描完一行数据后,也可能接下来的数据并不是下一行的数据,可能需要跳过一段填充数据:
&skip = 4 - ((m_iImageWidth * m_iBitsPerPixel)&&3) & 3;
至此,我们通过分析一个具体的位图文件例子详细地剖析了位图文件的组成。需要注意的是:我们讲的主要是PC机上的位图文件的构成,对于嵌入式平台,可能在调色板数据段与PC机的不同。如在嵌入式平台上常见的16位r5g6b5位图实际上采用的掩模的方式而不是索引的方式来表示图像。此时,在调色板数据段共有四个部分,每个部分为四个字节,实际表示的是彩色版规范。即:
&第一个部分是红色分量的掩模
&第二个部分是绿色分量的掩模
&第三个部分是蓝色分量的掩模
&第四个部分是Alpha分量的掩模(缺省为0)
典型的调色板规范在文件中的顺序为为:
&00F8 00 1F00 00
&& &00F8&0000为FB00h=0000(二进制),是蓝红分量的掩码。   E007&0000为&07E0h=0000(二进制),是绿色分量的掩码。   &1F00&0000为001Fh=1111(二进制),是蓝色分量的掩码。  &&&设置为0。
将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐每个分量为一个字节,再把这三个字节按BGR组合,放入存储器,就可以转换为24位标准BMP格式了。
这样我们假设在位图数据区有一个像素的数据在文件中表示为02 F1。这个数据实际上应为F102:
&r = (F102 AND F800) && 8 = F0h = 240
&g= (F102&AND&07E0)&& 3 = 20h = 32   b=(F102&AND&001F) && 3 =&10h =16
至此我们就可以显示了。(本文结束)
参考资源:
1.wiki百科 bmp file format&&
2.gwwgle的专栏 BMP格式详解
3.匿名 BMP格式图像文件详析
4.Singler的专栏位图文件(BMP)格式分析以及程序实现
随笔 - 132BMP文件格式详解(BMP file format)
文件格式,又称为(位图)或是,设备无关位图,是中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得数据的重要来源。的图形用户界面()也在它的内建图像子系统中对格式提供了支持。
下面以为分析工具,结合的位图数据结构对文件格式进行一个深度的剖析。
文件的数据按照从文件头开始的先后顺序分为四个部分:
&O&&&&&&&&&文件头:提供文件的格式、大小等信息
&O&&&&&&&&&位图信息头:提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息
&O&&&&&&&&&调色板:可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表
&O&&&&&&&&&位图数据:就是图像数据啦
下面结合结构体的定义,通过一个表来分析这四个部分。
我们一般见到的图像以位图像为主,即、、三种颜色各用个来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们常常见到有这样一种说法:位图文件从文件头开始偏移个字节就是位图数据了,这其实说的是或位图的情况。这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。
下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。
我们使用的图像显示如下:
&&&&&&&&&&&&&&&&&
这是一幅位的位图文件,因此它是含有调色板的。
在拉出图像数据进行分析之前,我们首先进行几个约定:
在文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为&低地址村存放低位数据,高地址存放高位数据&。如数据在内存中的存储顺序为:
这种存储方式称为小端方式与之相反的是大端方式()。对两者的使用情况有兴趣的可以深究一下,其中还是有学问的。
以下所有分析均以字节为序号单位进行。
下面我们对从文件中拉出来的数据进行剖析:
为文件头定义了如下结构体:
typedef struct tagBITMAPFILEHEADER
UINT16 bfT&&&
UINT16 bfReserved1;
UINT16 bfReserved2;
DWORD bfOffB
} BITMAPFILEHEADER;
对照文件数据我们看到:
:表示这是支持的位图格式。有很多声称开头两个字节必须为才是位图文件,从上表来看应为开头两个字节必须为才是位图文件。
:,通过查询文件属性发现一致。
:这是两个保留段,为。
:。即从文件头到位图数据需偏移字节。我们稍后将验证这个数据。
共有个字节。
位图信息头
同样地,为位图信息头定义了如下结构体:
:这就是说我这个位图信息头的大小为个字节。前面我们已经说过位图信息头一般有个字节,既然是这样,为什么这里还要给一个字段来说明呢?这里涉及到一些历史其实位图信息头原本有很多大小的版本的。我们看一下下表:
于兼容性的考虑,大多数应用使用了旧版的位图信息头来保存文件。而已经过时了因此现在最常用的格式就仅有了。因此,我们在前面说位图信息头的大小为字节。
:,图像宽为像素,与文件属性一致。
:,图像高为像素,与文件属性一致。这是一个正数,说明图像数据是从图像左下角到右上角排列的。
:该值总为。
:表示每个像素占个比特,即该图像共有种颜色。
:,,说明本图像不压缩。
:,图像的大小,因为使用,所以设置为。
:,水平分辨率,缺省。
:,垂直分辨率,缺省。
:说明本位图实际使用的颜色索引数为,与得到的结论一致。
:说明本位图重要的颜色索引数为,与前面得到的结论一致。
下面的数据就是调色板了。前面也已经提过,调色板其实是一张映射表,标识颜色索引号与其代表的颜色的对应关系。它在文件中的布局就像一个二维数组其中表示总的颜色索引数,每行的四个元素分别表示该索引对应的、、和的值,每个分量占一个字节。如不设透明通道时,为。因为前面知道,本图有个颜色索引,因此。索引号就是所在行的行号,对应的颜色就是所在行的四个元素。这里截取一些数据来说明:
索引:蓝,绿,红,
号:,,,
号:,,,
号:,,,
号:,,,
号:,,,
号:,,,等等。
一共有种颜色,每个颜色占用个字节,就是一共个字节,再加上前面的文件信息头和位图信息头的个字节加起来一共是个字节。也就是说在位图数据出现之前一共有个字节,与我们在文件信息头得到的信息:文件头到文图数据区的偏移为个字节一致!
下面就是位图数据了,每个像素占一个字节,取得这个字节后,以该字节为索引查询相应的颜色,并显示到相应的显示设备上就可以了。
注意:由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。
也即我们见到的第一个像素是图像最左下角的数据,第二个人像素为图像最后一行第二列的数据,&一直到最后一行的最后一列数据,后面紧接的是倒数第二行的第一列的数据,依此类推。
如果图像是位或是位数据的位图的话,位图数据区就不是索引而是实际的像素值了。下面说明一下,此时位图数据区的每个像素的颜色阵列排布:
位按照的顺序来存储每个像素的各颜色通道的值,一个像素的所有颜色分量值都存完后才存下一个下一个像素,不进行交织存储。
位数据按照的顺序存储,其余与位位图的方式一样。
像素的排布规则与前述一致。
讲完了像素的排列规则以及各像素的颜色分量的排列规则,最后我们谈谈数据的对齐规则。我们知道默认的扫描的最小单位是字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,图像顺应了这个要求,要求每行的数据的长度必须是的倍数,如果不够需要进行比特填充(以填充),这样可以达到按行的快速存取。这时,位图数据区的大小就未必是图片宽&每像素字节数&图片高能表示的了,因为每行可能还需要进行比特填充。
填充后的每行的字节数为:
&&,其中()为每像素的比特数。
在程序中,我们可以表示为:
这样,位图数据区的大小为:
我们在扫描完一行数据后,也可能接下来的数据并不是下一行的数据,可能需要跳过一段填充数据:
至此,我们通过分析一个具体的位图文件例子详细地剖析了位图文件的组成。需要注意的是:我们讲的主要是机上的位图文件的构成,对于嵌入式平台,可能在调色板数据段与机的不同。如在嵌入式平台上常见的位位图实际上采用的掩模的方式而不是索引的方式来表示图像。此时,在调色板数据段共有四个部分,每个部分为四个字节,实际表示的是彩色版规范。即:
第一个部分是红色分量的掩模
第二个部分是绿色分量的掩模
&第三个部分是蓝色分量的掩模
&第四个部分是分量的掩模(缺省为)
典型的调色板规范在文件中的顺序为为:
00F8&0000为FB00h=0000(二进制),是蓝红分量的掩码。&
  E007&0000为&07E0h=0000(二进制),是绿色分量的掩码。&
 &&1F00&Fh=1111(二进制),是蓝色分量的掩码。&
 &&&设置为0。
将掩码跟像素值进行&与&运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐每个分量为一个字节,再把这三个字节按BGR组合,放入存储器,就可以转换为24位标准BMP格式了。
这样我们假设在位图数据区有一个像素的数据在文件中表示为02 F1。这个数据实际上应为F102:
&r = (F102 AND F800) && 8 = F0h = 240
&g= (F102&AND&07E0)&& 3 = 20h = 32&
 &b=(F102&AND&001F) && 3 =&10h =16
至此我们就可以显示了。(本文结束)
参考资源:
1.&&&&&&wiki百科&bmp file format&&
2.&&&&&&gwwgle的专栏&BMP格式详解&http://blog.csdn.net/gwwgle/archive//4775396.aspx
3.&&&&&&匿名&BMP格式图像文件详析
4.&&&&&&Singler的专栏位图文件(BMP)格式分析以及程序实现
& & & & & & & & & & & & & & & & & & & & & 转自:/Matrix_Yao/archive//1615295.html
【FILE HEADER 实例图解】14 bytes
typedef struct {&
/* type : Magic identifier,一般为BM(0x42,0x4d) */&
/* File size in bytes,全部的档案大小 */&
unsigned short int reserved1, reserved2; /* 保留位 */&
/* Offset to image data, bytes */&
} FILEHEADER;
type:2 bytes,一般都是'B' (0x42)、'M' (0x4D)
size:4 bytes,记录该BMP档的大小,0x436 = 1078 bytes
reserved1:保留位,2 bytes
reserved2:保留位,2 bytes
offset:4 bytes,0x36 = 54 bytes
【INFO HEADER&实例图解】40 bytes
typedef struct {&
/* Info Header size in bytes */&
int width,/* Width and height of image */&
unsig/* Number of colour planes */&
uns /* Bits per pixel */&
unsi /* Compression type */&
un /* Image size in bytes */&
int xresolution, /* Pixels per meter */&
u /* Number of colours */&
/* Important colours */&
} INFOHEADER;
size:4 bytes,0x28 = 40 bytes,表示Info Header的大长度总共 40 bytes
width:4 bytes,0x10 = 16,图像宽度为16 pixel
height:4 bytes,0x10 = 16,图像高度为16 pixel
planes:2 bytes,0x01 = 1,位元面数为1
bits:2 bytes,0x20 = 32,每個pixel需要32bits
compression:4 bytes,0代表不压缩
imagesize:4 bytes,0x400 = 1024 bytes,点阵图资料大小为1024 bytes
xresolution:4 bytes,水平解析度
yresolution:4 bytes,垂直解析度
ncolours:4 bytes,点阵图使用的调色板颜色数
importantcolours:4 bytes,重要的颜色数
【RAW DATA&实例图解】
刚刚的File Header共14bytes,Info Header为40bytes,「imagesize」 = 1024 bytes,所以「14 + 40 + 1024 = 1078」, 即等于File Header中「size」的大小。下面我只提取部分的资料,反正全部的档案,減去Header档54位元组,剩下的就是点阵图的资料。
在Info Header中的「bits」为32 bits,故四个位元组一组,若24 bits,则三个位元组一组,例子中的长宽各为16,以「Z」字型来看,一列则为16组,即16 X 4 = 64 bytes。注意的是,图中是以A、B、C ~ &的读取顺序来解说,但实际上程序所读取到的通常回是反过来的,即& ~ C、B、A。另外,下图是以「BGRA」排列。PS将图片保存成BMP格式的时候有一个深度选项,这是什么意思啊?32位比24位更清晰吗?有图!-PS里JPG选项保存的时候怎么选择. 基线优化又是什么? _星空游戏网
PS将图片保存成BMP格式的时候有一个深度选项,这是什么意思啊?32位比24位更清晰吗?有图!
PS将图片保存成BMP格式的时候有一个深度选项,这是什么意思啊?32位比24位更清晰吗?有图!
32位的细节更完整,24位的有些类似的颜色会被合并,不过肉眼基本看不出啥区别
颜色取值数量,位数越大科曼多细节方面越好。
除了将图片保存为JPEC格式外,还能保存成什么格式……
除JPG以外,还要很多常用的图片格式,但不同的软件并非都支持: BMP格式 BMP是英文Bitmap...如何让图片另存成为JPG格式的……
提供几种方法: 1、专门的图片处理软件,例如Photoshop、美图秀秀、影音魔术手、Windows...为什么图片另存的时候会是位图bmp?这是什么意思啊可不可以直接变成jpg格式的啊?……
在网络上有的图片的确是只能保存bmp格式的,为什么? 因为对方网站的引擎资料库的图片是bmp格式的。...图片保存成什么格式像素好?……
图片保存成什么格式像素好?TIF或PNG,位图BMP是压缩比最低的。... 图像的格式与像素没有关系...图片格式怎样转换为bmp格式……
提供两种方法: 1、使用Windows系统自带的画图工具。先打开需要转换格式的图片,使用Window...怎么把图片转换成BMP格式……
1.选择要进行格式的图片,双击,进入【Windows照片查看器】 2.点击【打开】选项,选择【画图】...word里的文档内容如何保存成图片格式……
如何将word文本转为图片格式保存 1... BMP图片格...photoshop不能保存JPG,BMP,其他的格式……
ps里不能保存为jpg、bmp等格式,这个应该与ps文件的模式有关,修改一下图像的模式即可,具体步骤...将一副bmp格式的图像转换成jpg格式之后,会使~……
c 是正确的 BMp——不采用压缩技术,所以文件完整且会比较大。 JPEG——高压缩比,支持全彩,文...为什么新建的PS图片另存为的时候没有bmp和jpg格式的选项?……
注意点击菜单。 举例,PS CS2如下:

我要回帖

更多关于 bmp位图下载 的文章

 

随机推荐