最近在做手机RPG游戏,涉及到的数据文件和图片文件非常多,于是进行压缩解压缩。做下笔记摘要。很多部分参考了前人的笔记,感谢前人给了肩膀站站 :]
一、主体思路:
1、将目标文件按GZIP格式压缩成压缩文件。
2、把压缩文件改成.bmp 的后缀,当作图片资源放入.bar资源文件里。
3、应用程序中使用ISHELL_LoadResDataEx加载资源,使用IUnzipAStream接口解压后以流方式读取。
二、说明:
1.windows OS环境下可以用7-zip软件来压缩。选择压缩格式为GZIP即可。
2.为什么要当成图片资源放入bar文件呢?
API中查看ISHELL_LoadResDataEx的说明,有如下一段:
nType: 资源类型: RESTYPE_STRING, RESTYPE_IMAGE, RESTYPE_DIALOG, RESTYPE_CONTROL, RESTYPE_LISTITEM(当前不支持), RESTYPE_BINARY(当前不支持);
所以以图片形式加入资源文件。
3.BREW游戏中,资源大概可以分为如下几类:图片;数据(如地图矩阵);声音;笔记并未全部覆盖,举一反三吧。
三、知识预习:
1.GZip算法
linux中常用的后缀为.gz的文件就是GZIP格式的。
GZIP文件由1到多个"块"组成,实际上通常只有1块,每块包含头、数据、尾三部分。
结构如下:
|ID1|ID2|CM|FLG|MTIME|XFL|OS|||CRC32|ISIZE|
重点关注:文件末尾4个字节是未压缩文件的大小的低32位。
2.解压缩数据转化图片时,需要对bmp文件格式有所了解。
请参考笔记"BMP文件结构概述"-地址:http://blog.csdn.net/yuyueliuliu/archive/2009/09/23/4584025.aspx
或百度。
四、源代码: