//文件头格式
char[4] sign; //文件标记
int specialflag; //特殊标记(据猜测用来表示后面需要单独指定每帧的显示时间)
int unknown; //未知(据猜测,用来指定后面的SIZE的个数)
struct SIZE{long x; long y;} sizes[4]; //图像大小描述 (据猜测用来指定图像的实际大小,文件大小,开始点和结束点)
int frameCount; //图像帧数
int frameDispalyTime; //据猜测是图像每帧显示时间
struct RECT { long left;long top;long right;long bottom;} rects[frameCount]; //图像的显示RECT(据猜测用来确定每帧图像在实际大小里面的显示RECT)
if( specialflag == 1 ){ int frameDisplayTime[frameCount];} // 如果标记是真,这里就是每帧的单独显示时间(猜测)
根据帧数,后面有帧数个图像块,他们的格式如下:
// 图像块格式
int blockflag; //标记块是否有效,一般为1有效
int originSize; // 图像块的原始大小
int compressedSize; // 图像块的压缩后的大小
byte[compressedSize] data; //图像块压缩数据
附加一个代码网址 http://www.cppblog.com/johndragon/archive/2010/01/25/106386.aspx