序列图片保存成gif动画的问题 我有一连串的序列图片,001.bmp至999.bmp (或多或少)需要把这一串序列图片保存成一个GIF动画要怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有一个多媒体软件能做这个,animator。不知道你是说的是这中做法吗? 如果你是想写一个这样的程序的话,我劝你还是罢手吧,太复杂了,最起码你得先了解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文件就生成了 看看有没有帮助:http://www.freevbcode.com/ShowCode.ASP?SearchString=bmp%20dpi&ID=3533 一个数字签名/密钥传递/加密的DLL,已经上传到资料空间 数据库查询内存溢出!!!! 散分,先到先得 vb新手 vb 连接数据库 适时错误3704 打包时怎样把url文件(快捷方式文件)添加进CAB文件中? 请问有没有人编过参数样条函数是累加弦长那种 winsock的问题,怎样在异常断开时,使服务器处于监听状态 什么是FTP文件 你一定会的,进来拿分吧。 怎么着手用vb做一套汽车发动机的诊断系统 关于读取数据的问题
这种傻事我做过,不过没你这么狠,我没敢想把多张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文件就生成了
http://www.freevbcode.com/ShowCode.ASP?SearchString=bmp%20dpi&ID=3533