查找与导出T408/T508中的16位BMP图像
2024-06-09 18:00:10
供稿:网友
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值。按如下公式计算:
像素地址=(X+128*Y)*2
这里,起始像素X=66,Y=11851,可算出地址=3033988=0x002e4b84。
如果AXF被分成了几部分,则后面的AXF部分图像地址要加上前面的AXF的总字节数。
以上查找图片的方法是纯粹基于PS的,在已知图片大小或是索引地址的情况下,也可以直接找到索引再查,但是这种方法是有局限性的,容易赞成错误。
四、提出图片,验证图片起始地址
1、再转到HW,打开AXF文件(不是格式化后的AXF图像),按Ctrl+G,弹出Goto窗口,选择Beginning of file,填入2e4b84,按Go。
2、进菜单Edit -> Select Block,弹出下图中Select Block窗口,选择Size of Block填入8000(图片大小=128*128*2=8000h),按OK。这样就选定了这张图片的像素阵列。
3、按Ctrl+V复制数据,按Ctrl+N新建一文档,按Ctrl+V粘贴,再打开BMP头文件,复制到新文档的前面,同样地,只要把12h处相应宽、高改为8000 0000 8000 0000,再存为BMP文件即可。
4、用PS打开BMP文件,查看是否正确,注意提出的图像是垂直翻转的,如果无误,这个地址就确定了。