我有一连串的序列图片,001.bmp至999.bmp (或多或少)
需要把这一串序列图片保存成一个GIF动画要怎么做?

解决方案 »

  1.   

    有一个多媒体软件能做这个,animator。不知道你是说的是这中做法吗?
      

  2.   

    如果你是想写一个这样的程序的话,我劝你还是罢手吧,太复杂了,最起码你得先了解GIF文件的结构
    这种傻事我做过,不过没你这么狠,我没敢想把多张BMP图片合成成GIF,我只是把多张单帧的GIF合成成一个GIF动画
    当时在网上查了很久的资料,竟然一个关于GIF文件结构的资料都没查到,我最后用16进制编辑器一张一张GIF打开来看,愣是给我总结出了一套GIF的文件结构,而且还的确按此写出了程序,该程序也的确能合成特定的单帧GIF到动态GIF,之所以我说“特定的”,是因为我当时是用PS画每一帧图片,然后用一个格式转换工具转换成GIF,这个软件叫什么我已经不记得了,姑且称其为a软件,我把由a软件转换成的单帧GIF叫做“干净”的GIF,因为用其他软件转换的GIF可能含有非必要的数据和信息,比如生成图片的软件的名称和版本,再比如图片的版权信息等等,a软件转换的GIF不包含这些信息,我总结出的所谓GIF文件结构是基于a软件的,所以很自然的,最后我发现我的软件只能用来合成a软件转换成的GIF,而我对GIF真正的结构并不了解,不能做到过滤其他的非必要数据,所以我的软件没有通用性,所以最后我放弃了
    本来可以按我总结的给你细讲一下GIF的文件结构的(虽然不通用,但我那一套的确能成功合成GIF),甚至可以给出源码,只是因为一次硬盘的灾难(用GHOST恢复系统盘时误把磁盘当分区,所以整个硬盘变成了一个C盘的内容),我的所以数据全部丢失了,现在能找到的只剩当时总结GIF文件结构时写的一张纸,我试着回忆一些吧,回忆出多少算多少,希望对你有帮助静态GIF:
        最前面6个字节:47 49 46 38 39 61(即GIF89a)
        接下来4字节定义图片的宽和高:各占2字节
        下1个字节定义图片的颜色数:2^(值-&H7F)
            值        所代表颜色数
            80        2
            81        4
            82        8
            ……
            87        256
        再下面3字节不知什么用途,不需要读它,合成成动态GIF时,这里填00 00 00
        上面这14字节可能就是GIF的文件头了
        下面是固定:21 FF 0B 4E 45 54 53 43 41 50 32 2E 30 03 01 FF FF 00
        针对当初那款转换软件来讲是固定的,现在我再打开一幅GIF时就不是这些内容
        下面是颜色表:长度为“颜色数”*3字节,如:256色的图片,其颜色表长度应为256*3字节
        再下面是图片数据,一直到倒数最二字节
        最后1个字节是3B(即;)动态GIF:
        从静态GIF中读取文件头
        这里有些记不清了,是只读文件头还是一直读到再下面那一行固定内容,你自己慢慢试试吧,总之文件头是一定要读的
        然后是21 F9 04 08
        然后3个字节定义每一帧的延迟时间:具体不记得了
        然后是00 2C 00 00 00 00
        宽2字节,高2字节,颜色数1字节
        到这里就要开始循环了:其实我也记不表是从这里循环还是从21 F9 04 08就开始循环了
            从第一帧开始,从它的14字节开始读颜色数*3个字节,即颜色表
            从颜色表往后的第10字节读到文件尾倒数第2字节
            再读第2帧
            全部帧读完后,在最后加3B结束
        一个动态GIF文件就生成了
      

  3.   

    看看有没有帮助:
    http://www.freevbcode.com/ShowCode.ASP?SearchString=bmp%20dpi&ID=3533