废话不多说了,大家都知道 G630 用 CB 可以传图片,但有一点遗憾,就是只能传静态图片,动画图片就无能为力。没有现成的软件工具,那我们就发挥我们的 DIY 精神,自己动手更有成就感啊 。
首先介绍一下如何提取手机的内置图片。
G630 的内置动画图片是 16 位 R5 G6 B5 格式的 BMP 位图,几张图片连在一起播放就是我们看到的动画了。说到 BMP 我想还是要重点说明一下 BMP 文件的文件头, 16 位 R5 G6 B5 格式的 BMP 位图的文件头如下:
424D 4860 0000 0000 0000 4600 0000 2800 0000 8000 0000 6000 0000 0100 1000 0300 0000 0000 0000 120B 0000 120B 0000 0000 0000 0000 0000 00F8 0000 E007 0000 1F00 0000 0000 0000
文头长度为 46h (十六进制)这里我们只关心黑体字部分: 80 00 , 60 00 是图片的宽和高 , 是 0080 × 0060 转化为十进制就是 128 × 96 单位是象素。如果图片是 128 × 128 对应的值那就是 8000 , 8000 了。
用 HW 打开 G630 的第一段 bif 文件,转到 004C 29C 0, 这里就是手机内置图片的指针了,这可是我费老大劲才找到的。有了它,我们才可以很轻松找到每一幅图片。这里每 8 个字节代表一个图片指针,第一行的 6043 0000 6401 0218 ,我们看 6401 0218 它的意思是图片的地址是 02 01 64 , 18 是指图片文件在 G630 的第二段 bif 中。现在打开 G630 的第二段 bif 转到 020164 ,可以看到以下字串: 4A 82 4A82 4A00 0000 8043 0043 0568 1068 1068 1068……
630 中图片偏移 C 个字节 ,所以图片编码是从 0568 开始的 (带下划线部分), 80 43 是图片的尺寸即 80h × 43h ( 128 × 67 ), 0043 即 4300h = 80h × 43h × 2 就是图片的大小。 630 中每张图片都有尺寸及大小的代码。现在我们从 0568 开始选取 4300 大小的编码复制到新文件,保存为 BMP 文件。好了打开保存好的新图片◎#¥%%……打不开。当然打不开拉。我们还要作的就是把我上面提到的 BMP 文件头编码加到新文件的开头。打开图形可以看出是这是一张《呼叫 1 》的图片,但是图片是倒置的,当然这是正常的。一张图片就这样提取出来拉。依此类推可以提取其余的图片,根据提取的图片我们可以知道常用的动画图片的位置,例如开机,屏保 … 等。
最后还需要指出的是
1, 一个图片指针对应下的图片数量在 2 ~ 5 之间 。
2, 已知图片大小的情况下,也可以搜索大小代码如 8060 0060 , 4246 1824 等 。
3, Bif - 1 只有开机和关机动画, Bif - 2 中包含了 630 中大多数图片。
4, 替换图片就是替换你提取的代码。