多媒体光盘制作中汉字笔顺演示资源的_第1页
多媒体光盘制作中汉字笔顺演示资源的_第2页
多媒体光盘制作中汉字笔顺演示资源的_第3页
多媒体光盘制作中汉字笔顺演示资源的_第4页
多媒体光盘制作中汉字笔顺演示资源的_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、多媒体光盘制作中汉字笔顺演示资源的 一种压缩方法江 峰摘要:本文论述了多媒体光盘制作中汉字笔顺演示资源的一种压缩方法,该专用 方法具有 200倍以上的压缩效率。 本人用 Borland C+实现了压缩程序, 用 Visual C+ 2.0和 Visual C+ 1.51分别编写了 32位和 16位动态解压缩的 DLL ,可以很方便的在 WINDOWS 下编程调用。关键字:压缩,资源,多媒体1、引言随着计算机硬件的飞速发展, 以多媒体技术为核心的电子出版物正在逐步取代传统 的图书和音象制品。而作为电子出版物必须考虑 CD-ROM 的容量分配问题。一张普通 的 CD-ROM 可以容纳 650M 字

2、节的数据,而作为商业性目的的光盘需要尽可能的容纳 更多的内容,为了做到这一点,数据压缩技术一般是需要采用的。另外,由于 CPU 速 度的加快, 而光盘驱动器的速度相应显得较慢, 动态解压的速度在考虑读盘时间后反而 比不压缩更快, 有时为了得到较好的产品表现也需要压缩。 再者, 目前在市场上有许多 现成的压缩软件和算法, 但是一般的压缩软件有时并不能很好地实现动态解压缩, 这时 就需要我们自己编写相应的动态解压缩软件。 通用的压缩算法有时也不能满足我们对于 压缩效率和动态解压缩速度的要求, 这时也要求我们针对原始资源的特点构造专用的压 缩算法, 编写压缩软件和动态解压缩软件。 针对性算法虽然只能

3、适用于很少的范围, 但 是由于它充分考虑了原始资源本身的特点,往往能取得意想不到的效果。2、算法思想今年上半年,我们制作了汉字语图字典,该字典是用于教外国人学习汉语,采用 多媒体技术, 其中有每个汉字的读音、 笔顺、 解释及相应词组解释。 汉字笔顺采用 BMP 演示方式,即将汉字每写半笔存成一个 BMP 文件,依次调出来显示。每个 BMP 资源是 120*120*256色,大约为 16K 字节,每个汉字如果有 n 笔就会有 2*n+1个 BMP 文件。 这样的原始资源容量是非常大的,国标一级字库 3755个汉字就达到了 1000M 左右, 这样大量的原始资源在光盘上是无法存放的。 最初我们采用

4、了 AVI 的办法, 即将一个汉 字做成一个 AVI 文件, 这样使资源容量降到了 200M 左右, 但是对空间的占用仍然严重, 而且不易控制每幅画面的停留时间。经过对原始资源的分析,我们发现每个 BMP 资源 只使用了最多三种颜色, 256色是个巨大的浪费;对于每个汉字的多幅 BMP 资源,其 中的差别并不大,必须充分利用 BMP 资源的前后相关性,才能达到较理想的效果,于 是我们便构造了增量压缩算法。首先我们只存储 BMP 图形的位置信息而不存放颜色信 息,其次除第一幅 BMP 图形外,其后的只存储与前一幅不同的部分。具体存放位置信 息时,我们将 BMP 图形以横向看作线段组成的,只存放线

5、段的行号、起始列号、终止 列号。每个汉字的演示资源形成一个 VID (我们自己定义的压缩格式文件。解压时只 需依据 VID 中的信息重新填充一个 BMP 图形即可。253、具体实现3.1 BMP格式分析首先我们分析一下 BMP 图形的文件头。我们的原始资源是 256色图形,每个象素占用 一个字节,文件头中有一个调色板,长度为 1K 字节,分别是 0255对应的真彩色, 每个颜色为 4字节, 其中最高字节为 0。 BMP 文件的数据存放顺序是由左下角开始逐行 存放;对齐方式为每行 4字节对齐。以上就是我们所关心的数据。3.2 压缩的实现该模块用 Borland C+V3.1编写,负责将一组 BM

6、P 资源压缩为一个 VID 文件。该 模块分以下几个功能模块。1. 读取一个 BMP 图形,并将其转化为内部格式。由于 256色 BMP 图形有一个 1024字节的调色板,所以在文件头以外的颜色数据与真彩色值之间通过调色 板有一个对应关系,该模块负责识别底色、字模色和已经写过的笔画的颜色, 分别将其转化为 0、 1和 2,存放于内部的一个 120*120数组中。2. 比较相邻的两幅图形, 找出后一幅比前一幅多写的一笔或半笔, 形成增量数据 的内部格式。 原则是逐点比较, 只有前一幅是字模色并且后一幅是笔画色的仍 是笔画色,否则为底色。对于第一幅图形则直接将字模色转变为笔画色。 3. 将以内部格

7、式存放的图形数据逐行进行压缩。 逐行读取图形数据, 抽出每行中 的笔画色的线段, 记录行号、 起始列号、 终止列号, 每个线段信息为三个字节。 每幅图形以三个字节的 0表示结束,每个汉字的数据在以三个字节的 0表示 结束。该模块主程序可以一次压缩形成多个 VID 文件,只要输入起始和终止的汉字内码 即可。(这里指出,我们的原始资源的文件名是按汉字内码命名的。 BMPBase 命名为 “ Base ” +十六进制内码 +“ .BMP ” , 以后的笔顺为十六进制内码 +编号 +“ .BMP ”。3.3 动态解压缩的实现为了能够在 Visual Basic中方便的解压缩, 所以我们利用 Visua

8、l C+V1.51和 Visual C+V2.0分别编写了 16位和 32位的 DLL (WINDOWS 下的动态链接库。该 DLL 调 用入口如下:long getvid_first(LPSTR vidfilename,LPSTR bmpfilename;/得到汉字的第一幅 BMP 图形(写过一笔/Input: vidfilename-Vid 文件名,含路径/ bmpfilename-解压后生成的 BMP 文件名,含路径/return =0 : 错误/return =1 : 正确long getvid_next(LPSTR bmpfilename;/得到汉字的第二幅及以后各幅 BMP 图形/

9、Input: bmpfilename-解压后生成的 BMP 文件名,含路径/return =0 : 错误/return =1 : 正确26long setvid_color(int id,long color;/设置汉字的颜色/Input: ID=0 设置底色/Input: ID=1 设置字模色/Input: ID=2 设置笔画色/Input: color 真 彩色值/return =0 : 错误/return =1 : 正确long getvid_base(LPSTR vidfilename,LPSTR bmpfilename;/得到汉字字模的 BMP 图形/return =0 : 错误/r

10、eturn =1 : 正确动态解压缩分为以下几个主要模块:1. 得到汉字字模图形2. 得到第一笔的 BMP 图形 273. 得到汉字的第二幅及以后各幅 BMP 图形 4. 解压设置缓冲区 setbmp(BYTE Color; 4、实际结果利用以上的压缩工具和动态解压缩软件, 我们将 3755个汉字的资源压缩至 10M 字 节以内, 对于光盘制作来说, 已经没有必要再提高压缩效率了。 其实可以看出最后的一 幅 BMP 图形与第一幅只有颜色上的不同,所以我们没有必要存放 BMPBase 的信息,这 样几乎可以将压缩效率提高一倍。另外,我们在 DLL 中增加了一个函数供改变颜色之 用,这样我们就可以在具体显示时提供不同的颜色。最后我们重新修改了 BMP 的文件 头,使得该文件头只使用 3种颜色,这样就有效地避免了 256色显示模式下的屏幕闪 烁问题。5、结束语经过这次工作, 使我们深深认识到了根据原始资源特点构造压缩算法的重要性。 可 以看出,

温馨提示

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

最新文档

评论

0/150

提交评论