好像csdn里就有文件格式的文档..
这种东西网上好多了.找找...

解决方案 »

  1.   

    我以前也从事过一段时间这工做,其实说白了BMP和GIF都是图象存储用的不同只是GIF在INTERNET上可以以数据流的形式传输图象序列,换句话说GIF可以是动态的。您要想将GIF准确无误的传化成BMP很有可能就得用循环把GIF的图象序列传化成多个BMP文件。
    ----------------------------------------------------------------------------------
        BMP格式又称为DIB,也就是Microsoft Windows设备无关位元映射(Microsoft Device Independent Bitmap)文件,Bmp可以包含每个象点l位元、4位元、8位元或24位元的图形。其中1、4和8位元图形有彩色映像,而24位元图形则是全彩。
        一、文件头
        所有的DIB文件含有一个共同的文件头。
    bfOffBits字段含有从文件头的最后(字节14)到图像数据位开始之间的字节数,这样就能方便地跳过位图头。
    文件位图格式的两种变体可以通过查看位图头的第一个字(文件偏移字节14)来区分如果该字为12,则是一个os/2 格式文件,如果为40,则是Windows 3.x格式文件。
        二、Windows的位图头
    文件图后面为位图头和可选的彩色图像。位图头的结构有时称作BITMAPINFO,而带有色彩对应表的则为BITMAPINFOHEADER。
        三、色彩对应表
    使用每个像素1、4或8位的图像必然有一个色彩对应表。彩色映像的大小一般为2、16或256个表项,但如果图像不需要一个色彩全集,则表项可以更少些。如果biClrUsed字段为非零,则它包含使用的色彩数目,同时它也是色彩对应表的表项数目。如果字段为0,则色彩对应表为全部大小。24位图像没有色彩对应表,这种图像是直接RGB色彩。biClrUsed字段可以是非零,以提供一个建议的色彩大小。
    由于显示设备可能不具备图像所需的那么多色彩,因此色彩对应表中的表项应该让最重要的色彩排列在先。 biClrImportant字段如果不为零,则指出了对于重新生成好的图像而言,有多少种颜色是重要的。
    色彩对应表每个表项都有四个字节。
        四、Windows的位图数据
    位图数据紧跟在色彩对应表的后面。数据可以是不压缩的,如果要压缩,则4位和8位的图像可以使用一种RLE压缩方法。
    位从逻辑角度看是每次存入一行(没有压缩时从物理角度看也是如此),每行被填充到一个四字节边界。每个像素一位的位图
    每个像素只有一位,每字节有8个像素。字节中的最高位对应于最左边的像素。每个像素四位的位图,没有压缩的图像是每个字节有两个像素,高四位为最左边的像素,且每行填充到一个四字节边界。
        压缩过的图像使用一种RLE编码格式,由一系列组组成。有三种类型的组:重复组、文字组和特殊组。
        重复组由两个字节组成。第一个字节是像素计数值,第两个字节是一对象素,该组用第一个字节表示像素数,第两个字节为2个像素。例如,十六进制字节:05 24表示像素2 4 2 4 2
    文字由一个零字节、一个像素值字节和文字像素字节组成。像素计数值必须至少为3(只有一个或两个像素时可以用重复组编码)。文字像素用0填充到一个偶数值。
    例如,十六进制字节:
    0005 1234 5000(注意填充到偶数字节)
    表示像素 1 2 3 4 5
    特殊序列00 00表示一行的结束,特殊序列00 01表示位图的结束,特殊序列00 02 xx yy是一个位置增量,说明把图像向右走xx个像素和向下走yy个像素。每个像素8位的位图
    没有压缩的图像为一个字节一个像素,每行填充到四字节边界。压缩过的图像使用RLE编码格式,后者由一系列的组组成。组有三种类型:重复组、文字组和特殊组。重复组由两个字节组成,第一个字节为像素计数值,第两个字节为像素值。例如,十六进制字节:05 24表示像素 24 24 24 24 24。文字组由一个零字节、一个像素计数值字节和文字像素字节组成。像素计数值必须至少是3。文字像素用0填充到偶数字节数。
    例如,十六进制字节:
    0005 1234 5678 9A00(注意填充到偶数字节)表示像素 12 34 56 78 9A特殊序列与四位的位图一样。每个像素二十四位的位图。每个像素为3个字节,顺序依次为红、绿和蓝的值。每行用0填充到四字节的边界。--------------------------------------------------------------
        GIF格式是CompuServe通过免费发行格式说明书来推广自己。支持24位元彩色,由一个最多有256种颜色的调色板实现,图形大小最多是64K×64K个象点。GIF的特点,包括LZW压缩、多图形的定序、交错屏幕绘图以及文字重叠。
        了理解GIF,请记住它主要是为数据流而设计的一种传输格式,而不是作为文件的存储格式。换句话说,它具有顺序的组织形式(像TIFF那样的存储格式,则更普遍地使用随机组织形式,而不是顺序组织形式)。
        GIF有五个主要部分以固定顺序出现,所有部分均由一个或多个块(block)组成。每个块由第一个字节中的标识码或特征码标识。这些部分的颀序为:头块、逻辑屏幕描述块、可选的“全局”色彩表块(调色板)、各图像数据块(或专用的块)以及尾块(结束码)。
    下面是这些部分的内容:
    (1)头是一个块,它识别数据流为GIF,并指示恰当地解释后面的数据所需的最早版本的GIF解码程序(87a或89a)。
    (2)逻辑程序描述块定义了包围所有后面图像的一个图像平面的大小、纵横尺寸比以及色彩深度(它类似于产生图像的监视器屏幕)。它还指明后面跟随的是否为“全局”色彩表。
    (3)全局色彩表(如果存在)构成一个24位RGB元组的调色板(每种底色为一个字节)。如果后面的像没有其自己的“局部”调色板,那么全局色表就是缺省调色板。
    (4)后续数据作为“图形”或“专用”块出现。图形块典型地包含一个或多个位图图像,也可能是覆盖的文本。专用块或者包含一个专用应用程序码,或者包含一句不可打印的注释。
    (5)最后的尾块只是值为3B(十六进制)的一个字节,表示数据流已结束。
    注意:文件中的GIF数据流可能根本就不包含任何位图数据,这时,它只是要传输全局色彩表,作为没有自己调色板的后续数据流的缺省调色板。
    -------------------------------------------------------------