查找与导出T408/T508中的16位BMP图像

T408与T508在软件结构上基本一致,它们的图像,除了游戏、WAP下载的动画及一些小图标之外,基本上都是16位r5g6b5的BMP格式 。我们需要找出其中的图像,并核实地址,下面以以T508行货D1版的AXF文件为例进行说明 。(以下叙述中,0x起头或h结尾的数值为十六进制) 。
工具软件:1、Hex Workshop英文版(以下简称HW);
2、Phtoshop7.0中文版(以下简称PS);
3、Windows计算器(计算十六进制方便) 。
HW比较简单了,PS要稍复杂些 。我们先熟悉一下PS,PS的工作区域可以分为以下几个部分:
1、菜单栏:菜单栏包含执行任务的菜单,在上方;
2、选项栏:选项栏提供使用工具的选项,在菜单栏下方;
3、工具箱:工具箱中存放着用于创建和编辑图像的工具,在左方;
4、调板窗:调板可帮助您监视和修改图像,在右方;
一、做BMP头文件
1、启动PS,进菜单文件->新建,模式选RGB颜色,确认 。
2、进菜单文件->存储为,选路径,起名,格式选BMP,点保存->选择高级模式->再选择R5 G6 B5格式,确认 。这样就做成了一个r5g6b5格式的BMP文件,其中含有相应的文件头 。
二、将AXF文件格式化为图像
1、启动HW,打开AXF文件 。选择按16进制查看地址 。T408/T508中的大图一般是128像素宽,一幅128*N像素的图它的像素数据阵列大小为128*N*2=100h*N字节 。按Delete删掉结尾的一小段,使阵列大小能被100h整除 。T5D1版AXF删掉后面一段后为734d00h大小 。
2、打开刚才所做的BMP头文件,Ctrl C复制前面46h长的文件头 。再转到AXF文件,光标移到起始位置,Ctrl V粘贴 。然后修改宽、高 。图像高为734d00h/100h=734dh,按照倒序的原则,从12h开始填入8000 0000 4d73 0000(注意此时HW是改写状态) 。进菜单File->Save As,起名,后缀名为BMP,确认后,整个AXF文件就被格式化为一幅BMP图像了 。
注意!PS对图像的宽、高有限制的,都不能超过30000=7530h,所以如果一次不能把整个AXF格式化,还需要分几次,分别加上文件头就是了 。
三、查找图片地址,确定图片大小
我们将利用PS的右边的信息调板直接找出图片的地址 。转到PS,打开格式化后的AXF图像文件 。
1、进菜单编辑->预置->单位与标尺,将标尺改成像素 。进菜单窗口,找到信息,点击选择,调出信息调板 。这样我们就在图像上移动光标时,信息调板上会显示光标的坐标值 。
2、由于图像是垂直翻转的,需要倒过来 。进菜单图像->旋转画布->垂直翻转画布 。
3、现在的AXF图像,是一长条图,按z键选择选择工具箱中的缩放工具,在图像上单击可放大,按住Alt键单击可缩小 。按住空格键可用鼠标左键拖动图像(在大多数情况下都可这样) 。这样会看清楚里面的图片 。请注意:
(1)有些图片有错位,这是由于起始地址不是正好能被128*2=100h整除而造成 。
(2)一幅动画的所有帧一般是放在一起的,这样只需要查出第一帧的起始地址,及每帧的高度即可 。
(3)有些动画,是分成了固定与可动的两部分,将来在替换时,也要按照这样方式进行 。
4、现在我们将AXF图像文件放大,假定我们放大的是开机动画的第二张,注意它是有错位的,在垂直方向所有16位BMP图片只可能错位一个像素 。按m键选择矩形选框工具,画出一个矩形选框,选框的上下边要与图片上下边恰好吻合,观察右边的信息调板,记下选框的H值,这就是图像的高度了 。可以看到,这张图片的高为128像素 。注意对照手机认准图片的起始像素 。
5、按z键,对着起始像素单击,尽量地放大它 。按m键选择矩形选框工具,把十字叉的中心移到起始像素上,观察右边的信息调板,记下像素坐标的X、Y值 。按如下公式计算:

推荐阅读