图像编解码技术及应用_第1页
图像编解码技术及应用_第2页
图像编解码技术及应用_第3页
图像编解码技术及应用_第4页
图像编解码技术及应用_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图像编解码技术及应用1 图像编解码技术概论:在当前的图像压缩领域中常用的技术有:BMP、EPS、GIF、JPG、PDF、PIC、PNG、PSD、TIF。上述技术间的差异主要存在于图像编解码的算法不同,通过对算法的研究可以使我们更加容易的理解图像压缩的原理。位图格式(BMP)是在DOS时代就出现的一种元老级文件格式,因此它是DOS和WINDOWS操作系统上的标准的WINGDOWS点阵图像格式,以此文件格式存储时,采用一种非破坏性的RLE压缩,不会省略任何图像的细部信息。EPS是最常见的线条稿共享文件格式,它是以PostScript语言为开发基础,所以EPS文件能够同时兼容矢量和点阵图形,所有的排版或图像处理软件如PageMaker或Illustrator等,都提供了读入或置入EPS格式文件的能力,而且RGB和CMYK对象也可以保有各自的原始的色彩模式。GIF应该是在网络上最常见的一种压缩文件格式,它的英文全名Graphic Interchange format,当初研发的目的是为了最小化电缆上的传输,因此能采用LZW方式进行压缩,但可显示的颜色范围只局限于256索引色,目前所采用的GIF图形共有两种格式:87a和89a,常见于网页上建议的小动画制作,其中GIF89a还可提供透明色效果,点阵图形,灰度图形或者索引颜色模式皆可存储为此种文件格式 JPG跟GIF一样为网络上最常见道的图像格式,其英文正式名称为Joint Photographic Experts Group,它是以全彩模式进行显示色彩,是目前最有效率的一种压缩格式,常用于照片或连续色调的显示,而且没有GIF去掉图像细部信息的缺点,但需要注意的是此类图像需要自行设置压缩程度,在打开时JPG图像会自动解压缩,不过要注意的是JPG采用的压缩是破坏性的压缩,因此会在一定程度上减损图像本身的品质。 PDF是Adobe公司近几年权力推行的一种文件格式,它已Post Level2语言为其开发基础,同时可显示矢量及点阵的数码图形,同时还具有文件搜寻及网上预览的功能,即所谓电子化文件的观念,我们只要利用PageMaker或Illustrator设计完成一个出版文件,并以PDF格式输出便可发送出去,不会有分色、装订和印刷的烦恼,而且可适用相当多的平台,如Macintosh、Windows、UNIX以及DOS。PDF文件的浏览器为Acrobat Reader。 PIC是苹果(Macintosh)操作系统的标准文件格式,以QuickDraw显示语言为开发基础,是少数可以同时支持矢量和点阵的图像类型,利用Macintosh色彩上的优势,PIC可以支持任何颜色深度,尺寸及分辨率,甚至可支持到32位的图像。 PNG是由GIF衍生出来的一种新的图像格式,似乎有取代GIF的趋势,同样适用于网页图像显示,同时采用非破坏性的压缩方式来缩减文件大小,在传输时亦可以渐次的方式将接收到的图像显示出来,不必苦等数据传输完毕后才能一窥全貌。 PSD是Photoshop中的标准文件格式,是Adobe公司为Photoshop量身定做的定制格式,也是唯一支持Photoshop所有功能的文件类型,包括图层、通道、路径等,在存储时会进行非破坏性压缩以减少存储空间,打开时速度也较其他格式快些,在作品未定稿前强烈建议以此种文件格式存储,以便日后修改。TIF是由Aldus公司早期所研发的一种文件格式,至今仍然是图像文件的主流格式之一,同时横跨苹果(Macintosh)和个人电脑(PC)两大操作系统平台,可以说是跨平台操作的标准文件格式,而且也广泛支持图像打印的规格,如分色的处理功能,它所使用的是一种LZW的非破坏性压缩。遗憾的是不支持矢量图形。2BMP、GIF、JPEG图像编解码详解:一、 行程长度压缩 原理是将一扫描行中的颜色值相同的相邻像素用一个计数值和那些像素的颜色值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。对于拥有大面积,相同颜色区域的图像,用RLE压缩方法非常有效。由RLE原理派生出许多具体行程压缩方法: 1.PCX行程压缩方法: 该算法实际上是位映射格式到压缩格式的转换算法,该算法对于连续出现1次的字节Ch,若Ch0xc0则压缩时在该字节前加上0xc1,否则直接输出Ch,对于连续出现N 次的字节Ch,则压缩成0xc0N,Ch这两个字节,因而N最大只能为ffc0=3fh(十进制为63),当N大于63时, 则需分多次压缩。 2.BI_RLE8压缩方法:在WINDOWS的位图文件中采用了这种压缩方法。该压缩方法编码也是以两个字节为基本单位。其中第一个字节规定了用第二个字节指定的颜色重复次数。 如编码 0504表示从当前位置开始连续显示5个颜色值为04的像素。当第二个字节为零时第二个字节有特殊含义:0表示行末;1表示图末;2转义后面2个字节, 这两个字节分别表示下一像素相对于当前位置的水平位移和垂直位移。这种压缩方法所能压缩的图像像素位数最大为8位(256色)图像。3.BI_RLE压缩方法: 该方法也用于WINDOWS位图文件中,它与 BI_RLE8编码类似,唯一不同是:BI_RLE4的一个字节包含了两个像素的颜色,因此,它只能压缩的颜色数不超过16的图像。因而这种压缩应用范围有限。 4.紧缩位压缩方法(Packbits):该方法是用于Apple公司的Macintosh机上的位图数据压缩 方法, TIFF 规范中使用了这种方法, 这种压缩方法与BI_RLE8压缩方法相似,如1c1c1c 压缩为:83 1c 21 81 32 56 48,显而易见, 这种压缩方法最好情况是每连续128个字节相同,这128个字节可压缩为一个数值7f。这种方法还是非常有效的。 二、霍夫曼编码压缩: 也是一种常用的压缩方法。是1952年为文本文件建立的,其基本原理是频繁使用的数据用较短的代码代替,很少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。如: 有一个原始数据序列,ABACCDAA则编码为A(0),B(10),C(110),(D111),压缩后为1100。产生霍夫曼编码需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始数据中的每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。三、LZW压缩方法 LZW压缩技术比其它大多数压缩技术都复杂, 压缩效率也较高。其基本原理是把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符 串,如用数值0x100代替字符串abccddeee这样每当出现该字符串时,都用0x100代替,起到了压缩的作用。 至于0x100与字符串的对应关系则是在压缩过程中动态生成的,而且这种对应关系是隐含在压缩数据中,随着解压缩的进行这张编码表会从压缩数据中逐步得到恢复,后面的压缩数据再根据前面数据产生的对应关系产生更多的对应关系。直到压缩文件结束为止。LZW是可逆的, 所有信息全部保留。四、算术压缩方法 算术压缩与霍夫曼编码压缩方法类似,只不过它比霍夫曼编码更加有效。算术压缩适合于由相同的重复序列组成的文件,算术压缩接近压缩的理论极限。这种方法,是将不同的序列映像到0到1之间的区域内,该区域表示成可变精度(位数 )的二进制小数,越不常见的数据要的精度越高(更多的位数),这种方法比较复杂,因而不太常用。五、JPEG( 联合摄影专家组 Joint Photographic Exprerts Group) JPEG标准与其它的标准不同,它定义了不兼容的编码方法,在它最常用的模式中,它是带失真的,一个从JPEG文件恢复出来的图像与原始图像总是不同的,但有损压缩重建后的图像常常比原始图像的效果更好。JPEG的另一个显著的特点是它的压缩比例相当高,原图像大小与压缩后的图像大小相比,比例可以从1到8090不等。 这种方法效 果也好,适合多媒体系统。介绍完了压缩算法,我们来简要介绍一下三种位图格式的异同和它们之间的相互转换。2.1 BMP:图象文件就是描绘了一幅图象的计算机磁盘文件。形成数字图象数据后,将其存储在计算机里的方法有2种,即位映射和向量处理方式。我们这里主要讨论的是位图。不同图象软件几乎都用各种的方法处理图象,图象格式也多种多样,它主要包括文件识别头和图象数据。文件识别头用来让计算机判断是哪种文件格式,图象数据包含了整个对图象描绘相关数据,包括调色板、位图映象等。根据压缩算法不同,映象方式也不同,下面简要介绍一下压缩算法。位图文件头:包含BMP图象文件的类型、显示内容等信息。typedef struct tagBITMAPFILEHEADER WORD bfType; / 位图文件的类型,必须为BM DWORD bfSize; / 位图文件的大小,以字节为单位 WORD bfReserved1; / 位图文件保留字,必须为0 WORD bfReserved2; / 位图文件保留字,必须为0 DWORD bfOffBits; / 位图数据的起始位置,以相对于位图文件头的偏移量表示 BITMAPFILEHEADER; 0x0000H - 0x0001H 2 BYTES 文件标识 基本上就是BM0x0002H - 0x0005H 4 BYTES 表示整个文件的大小 字节顺序是否固定 little_Endian or big_Endian?0x0006H - 0x0009H 4 BYTES 保留 必须设置为00x000AH - 0x000DH 4 BYTES 位图数据的偏移量 从文件开始计算位图信息数据结构由BITMAPINFOHEADER和RGBQUAD两个数据结构组成 接下来为位图信息头: typedef struct tagBITMAPINFOHEADER DWORD biSize; / 本结构所占用字节数 LONG biWidth; / 位图的宽度,以像素为单位 LONG biHeight; / 位图的高度,以像素为单位 WORD biPlanes; / 目标设备的级别,必须为1 WORD biBitCount / 每个像素所需的位数,必须是1(双色),/ 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; / 位图压缩类型,必须是0(不压缩), / 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; / 位图的大小,以字节为单位 LONG biXPelsPerMeter; / 位图水平分辨率,每米像素数 LONG biYPelsPerMeter; / 位图垂直分辨率,每米像素数 DWORD biClrUsed; / 位图实际使用的颜色表中的颜色数 DWORD biClrImportant; / 位图显示过程中重要的颜色数 BITMAPINFOHEADER; 其中BITMAPINFOHEADER数据结构包含了有关BMP图象的宽、高、压缩方法等信息。0x000EH - 0x0011H 4 BYTES 位图信息头的长度大小 整个结构的大小,可能会增加字段,所以需要读取该值0x0012H - 0x0015H 4 BYTES 位图宽度 单位像素0x0016H - 0x0019H 4 BYTES 位图高度 单位像素还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,图像是倒向的,如果该值是一个负数,图像是正向的。当高度值是一个负数时(正向图像)图像将不能被压缩,压缩方式不能是BI_RLE8或BI_RLE4。0x001AH - 0x001BH 2 BYTES 位图的位面数 总是10x001CH - 0x001DH 2 BYTES 每个像素的位数 值为1 4 8 16 24 320x001EH - 0x0021H 4 BYTES 压缩方式(0 不压缩 BI_RGB 1 RLE-8压缩,8位RLE压缩 BI_RLE8 每个象素8比特的RLE压缩编码,压缩格式由2字节组成 2 RLE-4压缩,4位RLE压缩 BI_RLE4 每个象素4比特的RLE压缩编码,压缩格式由2字节组成 3 Bitfields位域存放方式 BI_BITFILEDS 每个象素的比特由指定的掩码决定)0x0022H - 0x0024H 4 BYTES 位图数据大小 必须是4的整数倍,说明图象的大小,以字节为单位。当用BI_RGB格式时,可设置为0。0x0026H - 0x0029H 4 BYTES 水平分辨率 对于设备无关图 ,设置成为00x002AH - 0x002DH 4 BYTES 垂直分辨率 对于设备无关图 ,设置成为0typedef struct tagRGBQUAD BYTE rgbBlue; / 蓝色的亮度(值范围为0-255) BYTE rgbGreen; / 绿色的亮度(值范围为0-255) BYTE rgbRed; / 红色的亮度(值范围为0-255) BYTE rgbReserved; / 保留,必须为0 RGBQUAD; 0x002EH - 0x0031H 4 BYTES 使用的颜色数 说明位图实际使用的颜色表中的颜色索引数,设为0的话,则说明使用所有调色板项,如果有调色板,则大小等于2VALUE(0x001CH - 0x001DH) 16位及以上位图不使用颜色表。0x0032H - 0x0035H 4 BYTES 重要的颜色数 指定重要的颜色数, 一般设置为0,表示所有的颜色一样重要 如果设置的不等于0或者颜色数,就只有这么多值数据结构RGBQUAD定义一种颜色。位图阵列:位图阵列记录了图象的每一个象素值。从图象的左下角开始逐行扫描图象。从左到右,从上到下,将图象的象素值逐一记录下来,这些记录象素值的字节组成了位图阵列。位图阵列数据的存储格式有压缩和非压缩两种格式。1 非压缩格式 位图中的每一个点的象素值对应与位图阵列的若干位,而位图阵列的若干位由图象的高度、宽度及图象的颜色数决定。2 压缩格式 在bmp格式文件中,Windows支持BI-RLE8和BI-RLE4两种压缩类型的存储格式。图象数据:BMP图象数据的存储顺序是由下而上(图象上下颠倒存储),而图象的宽度(以字节为单位)必须是4的倍数。如果不足4的倍数必须补足。虽然BMP图象数据有BI_RLE8和BI_RLE4两种压缩格式,但是使用很少。BI_RLE8和BI_RLE4(RunLength压缩):二者的差别在于前者以8位为一个处理单位,后者以4位为一个处理单位。解压缩时,每次读取2字节数据(BYTE1 , BYTE2)BYTE1!= 0x0 BYTE1为数据重复值,将BYTE2重复BYTE1次BYTE1=0x00,BYTE2=0x00表示此扫描线结束(end of line)BYTE1=0x00, BYTE2=0x01表示文档结束(end of file)BYTE1=0x00, BYTE2=0x02坐标位移指示,表示后面两个字节分别是指下一个像素位置与目前像素位置的水平和垂直位移数值。BYTE1=0x00, BYTE2=0x030xFF BYTE2为数据读取值。连续读取BYTE2个字节的数据,而BYTE2必须是2的整数倍,否则必须补足。 例:一段压缩数据(BI_RLE8)如下:0x03 0x04 0x05 0x06 0x00 0x03 0x45 0x56 0x67 0x00 0x02 0x78 0x00 0x02 0x05 0x01 0x02 0x78 0x00 0x00 0x04 0x1E 0x00 0x01BYTE1 BYTE20x03 0x04 0x04 0x04 0x04 0x05 0x06 0x06 0x06 0x06 0x06 0x06 0x00 0x03 (0x45 0x56 0x67 0x00) 0x45 0x56 0x67 0x02 0x78 0x78 0x78 0x00 0x02 (0x05 0x01) 右移5点,下移一点 0x02 0x78 0x78 0x78 0x00 0x00 End of line 0x04 0x1E 0x1E 0x1E 0x1E 0x1E 0x00 0x01 End of file 一段压缩数据(BI_RLE4)如下: 0x03 0x04 0x05 0x06 0x00 0x03 0x45 0x60 0x04 0x63 0x03 0x78 0x00 0x02 0x05 0x01 0x03 0x78 0x00 0x00 0x05 0xD4 0x00 0x01 0x03 0x04 0x00 0x04 0x00 0x05 0x06 0x00 0x06 0x00 0x06 0x00 0x00 0x03 (0x45 0x60) 0x04 0x05 0x06 0x04 0x63 0x06 0x03 0x06 0x03 0x03 0x78 0x07 0x08 0x07 0x00 0x02 (0x05 0x01)右移5点,下移一点 0x03 0x78 0x07 0x08 0x07 0x00 0x00 End of line 0x05 0xD4 0x0D 0x05 0x0D 0x05 0x0D 0x00 0x01 End of file紧跟在彩色表之后的是图象数据字节阵列。图象的每一扫描行由表示图象象素的连续的字节组成,每一行的字节数取决于图象的颜色数目和用象素表示的图象宽度。扫描行是由底向上存储的,这就是说,阵列中的第一个字节表示位图左下角的象素,而最后一个字节表示位图右上角的象素。(只针对与倒向DIB,如果是正向 DIB,则扫描行是由顶向下存储的),倒向DIB的原点在图像的左下角,而正向DIB的原点在图像的左上角。同时,每一扫描行的字节数必需是4的整倍数,也就是DWORD对齐的。如果你想确保图像的扫描行DWORD对齐,可使用下面的代码:(width*biBitCount)+31)5)2起始地址为:(如果该部分存在的话)sizeof(第一部分) + sizeof(第二部分)读取位图文件的时候第一部分应该不变,需要根据第二部分的0x000EH-0x0011H的值大小来确定第二部分的数据大小。整个区域的大小:N * 4 BYTES 4个字节依次表示BGRA, 编程中是RGBA 这里是little_Endian具体大小依赖很多数值起始地址为:VALUE(0x000AH - 0x000DH)整个区域的大小:具体每个像素的表示方法,依赖0x001CH - 0x001DH每个像素的位数 0x001EH - 0x0021H压缩方式 0x002EH - 0x0031H颜色表大小0x001CH - 0x001DH 每个像素的位数biBitCount=1 表示位图最多有两种颜色,缺省情况下是黑色和白色,你也可以自己定义这两种颜色。图像信息头装调色板中将有两个调色板项,称为索引0和索引1。图象数据阵列中的每一位表示一个象素。如果一个位是0,显示时就使用索引0的RGB值,如果位是1,则使用索引1的RGB值。biBitCount=4 表示位图最多有16种颜色。每个象素用4位表示,并用这4位作为彩色表的表项来查找该象素的颜色。例如,如果位图中的第一个字节为0x1F,它表示有两个象素,第一象素的颜色就在彩色表的第2表项中查找,而第二个象素的颜色就在彩色表的第16表项中查找。此时,调色板中缺省情况下会有16个RGB项。对应于索引0到索引15。biBitCount=8 表示位图最多有256种颜色。每个象素用8位表示,并用这8位作为彩色表的表项来查找该象素的颜色。例如,如果位图中的第一个字节为0x1F,这个象素的颜色就在彩色表的第32表项中查找。此时,缺省情况下,调色板中会有256个RGB项,对应于索引0到索引255。biBitCount=16 表示位图最多有216种颜色。每个色素用16位(2个字节)表示。这种格式叫作高彩色,或叫增强型16位色,或64K色。它的情况比较复杂,当 biCompression成员的值是BI_RGB时,它没有调色板。16位中,最低的5位表示蓝色分量,中间的5位表示绿色分量,高的5位表示红色分量,一共占用了15位,最高的一位保留,设为0。这种格式也被称作555 16位位图。如果biCompression成员的值是BI_BITFIELDS,那么情况就复杂了,首先是原来调色板的位置被三个DWORD变量占据,称为红、绿、蓝掩码。分别用于描述红、绿、蓝分量在16位中所占的位置。在Windows 95(或98)中,系统可接受两种格式的位域:555和565,在555格式下,红、绿、蓝的掩码分别是:0x7C00、0x03E0、0x001F,而在565格式下,它们则分别为:0xF800、0x07E0、0x001F。你在读取一个像素之后,可以分别用掩码“与”上像素值,从而提取出想要的颜色分量(当然还要再经过适当的左右移操作)。在NT系统中,则没有格式限制,只不过要求掩码之间不能有重叠。biBitCount=24 表示位图最多有224种颜色。这种位图没有调色板,在位数组中,每3个字节代表一个象素,分别对应于颜色R、G、B。biBitCount=32 表示位图最多有232种颜色。这种位图的结构与16位位图结构非常类似,当biCompression成员的值是BI_RGB时,它也没有调色板,32位中有24位用于存放RGB值,顺序是:最高位保留,红8位、绿8位、蓝8位。这种格式也被成为888 32位图。如果 biCompression成员的值是BI_BITFIELDS时,原来调色板的位置将被三个DWORD变量占据,成为红、绿、蓝掩码,分别用于描述红、绿、蓝分量在32位中所占的位置。在Windows 95(or 98)中,系统只接受888格式,也就是说三个掩码的值将只能是:0xFF0000、0xFF00、0xFF。而在NT系统中,你只要注意使掩码之间不产生重叠就行。(注:这种图像格式比较规整,因为它是DWORD对齐的,所以在内存中进行图像处理时可进行汇编级的代码优化(简单)。 0x002EH - 0x0031H 4 BYTES 使用的颜色数 指定实际使用的颜色数目。如果设置成0,位图使用的颜色数目就等于 biBitCount成员中的数目。请注意,如果不是可用颜色的最大值或不是0,则在编程时应该注意调色板尺寸的计算,比如在4位位图中,调色板的缺省尺寸应该是16*sizeof(RGBQUAD),如果不是,那么调色板的尺寸就应该是 VALUE(0x002EH - 0x0031H)*sizeof(RGBQUAD)。图象数据压缩BI_RLE8:每个象素为8比特的RLE压缩编码,可使用编码方式和绝对方式中的任何一种进行压缩,这两种方式可在同一幅图中的任何地方使用。编码方式:由2个字节组成,第一个字节指定使用相同颜色的象素数目,第二个字节指定使用的颜色索引。此外,这个字节对中的第一个字节可设置为0,联合使用第二个字节的值表示:第二个字节的值为0:行的结束。第二个字节的值为1:图象结束。第二个字节的值为2:其后的两个字节表示下一个象素从当前开始的水平和垂直位置的偏移量。绝对方式:第一个字节设置为0,而第二个字节设置为0x030xFF之间的一个值。在这种方式中,第二个字节表示跟在这个字节后面的字节数,每个字节包含单个象素的颜色索引。压缩数据格式需要字边界(word boundary)对齐。下面的例子是用16进制表示的8-位压缩图象数据:03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01 02 78 00 00 09 1E 00 01这些压缩数据可解释为 :压缩数据 扩展数据03 04 04 04 04 05 06 06 06 06 06 06 00 03 45 56 67 00 45 56 67 02 78 78 78 00 02 05 01 从当前位置右移5个位置后向下移一行02 78 78 78 00 00 行结束09 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 00 01 RLE编码图象结束 BI_RLE4:每个象素为4比特的RLE压缩编码,同样也可使用编码方式和绝对方式中的任何一种进行压缩,这两种方式也可在同一幅图中的任何地方使用。这两种方式是:编码方式:由2个字节组成,第一个字节指定象素数目,第二个字节包含两种颜色索引,一个在高4位,另一个在低4位。第一个象素使用高4位的颜色索引,第二个使用低4位的颜色索引,第3个使用高4位的颜色索引,依此类推。绝对方式:这个字节对中的第一个字节设置为0,第二个字节包含有颜色索引数,其后续字节包含有颜色索引,颜色索引存放在该字节的高、低4位中,一个颜色索引对应一个象素。此外,BI_RLE4也同样联合使用第二个字节中的值表示:第二个字节的值为0:行的结束。第二个字节的值为1:图象结束。第二个字节的值为2:其后的两个字节表示下一个象素从当前开始的水平和垂直位置的偏移量。下面的例子是用16进制数表示的4-位压缩图象数据:03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01 04 78 00 00 09 1E 00 01这些压缩数据可解释为 :压缩数据 扩展数据03 04 0 4 005 06 0 6 0 6 0 00 06 45 56 67 00 4 5 5 6 6 7 04 78 7 8 7 8 00 02 05 01 从当前位置右移5个位置后向下移一行04 78 7 8 7 8 00 00 行结束09 1E 1 E 1 E 1 E 1 E 1 00 01 RLE图象结束 2.2 GIF:GIF的全称是Graphics Interchange Format,.译做图形交换格式。GIF是一种公用的图象文件格式标准。GIF文件结构包含一个文件头,在一个GIF文件中首先碰到的是GIF的标志,这个标志告诉解码程序这是个GIF文件。这个标志是3字节的串:GIF。一个GIF文件中可以存放多幅图象,但绝大多数的文件都只包含一幅图象。然后是屏幕描述字(screen descriptor),说明了用来生成的显示文件中的图象的显示器分辨率,分别表示屏幕的宽和高。紧跟下来的一个字节是全局标志,其低三位说明了即将碰到的图象是多少颜色的。最高位表示是否存在一个全局色彩表。背景色表示把背景置成适当的颜色,实际上是一个指向全局色彩表的数。Struct Global_DataUnsigned short screen_width;Unsigned short screen_height;Unsigned char background;har tail=0;接下来是全局色彩表,按顺序存放所有的颜色,每一种颜色由色彩表的一项来描述,每项是3字节,分别表示红、绿、蓝三种原色的强度。其长度有全局标志的低三位表示。以后的数据都是局部的了。是些数据块的集合。下面是图象数据块的结构。Struct Local_HeadChar heading=,;Unsigned short image_left;/图象的屏幕上显示的起始位置Unsigned short image_top;Unsigned short image_width;U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论