找回密码
 注册
搜索
查看: 1917|回复: 2

[讨论] 请教PBM图片文件的格式问题

[复制链接]
发表于 2009-5-11 21:33:05 | 显示全部楼层 |阅读模式
PBM文件图片格式跟BMP一样,都是0x42,0x4D开头。 但是经过编译处理之后,就变成了另一种形式的格式。如下:
我想请教一下各位高人,这个格式跟BMP的格式有怎样的对应关系?换句话说,有了如下数据,我如何把他转成BMP文件呢?





__align(4) const U8 __MAINLCD__UIELEMENT__ARROW__SELECT_RIGHT_PBM[] =
{
        0x28, 0x01, 0x4A, 0x00, 0x00, 0x14, 0x40, 0x01,
        0x14, 0x00, 0x14, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x02, 0x05, 0x02, 0xFE, 0xFF, 0x1C, 0xE7,
        0xC1, 0x96, 0x21, 0x75, 0x0B, 0x00, 0x00, 0xD8, 0x02, 0x00, 0xC0, 0xB6, 0x00, 0x00, 0xB6, 0x2D,
        0x00, 0xB0, 0x6D, 0x0B, 0x80, 0x6D, 0xDB, 0x02, 0x6C, 0xDB, 0xB6, 0x60, 0xDB, 0xB6, 0x4D, 0x24,
        0x49,       0x92, 0x22, 0x49, 0x92, 0x02,           0x49, 0x92, 0x02, 0x48, 0x92,            0x02, 0x40, 0x92, 0x02, 0x00,
        0x92, 0x02, 0x00, 0x90, 0x02,                0x00, 0x80, 0x02, 0x00, 0x00,
};
 楼主| 发表于 2009-5-11 21:34:01 | 显示全部楼层
这些数据是在 CustImgDataHW.h 中生成的。
点评回复

使用道具 举报

发表于 2010-4-15 14:07:10 | 显示全部楼层
顺便提一下常用资源中的PNG和PBM文件,PNG图片有许多优点,最突出的优点的是能够设计更漂亮的UI,但一个最明显的缺点却是需要的空间比较大,PNG在使用时,MTK默认会把其转化为一种BMPA的文件,全部使用PNG设计手机,最终是以牺牲空间为代价的,对于一个靠SP来打价格战的方案公司来说,是一个两难的选择。而且PNG在使用过程中也会遇到一些问题,这一点可以参考我以前的文章。PBM其实是BMP改了扩展名后得来的,是MTK推荐的文件类型,而MTK默认会把一些经常调用的BMP图片直接转为PBM,虽然在文件上看来他还是BMP,但在编译时MTK会修改生成的数组BUFFER,使其变为PBM,比如SI_ALARM.bmp,在文件夹里看时是SI_ALARM.bmp,到custimgdatahw.h看时,发现他被默认的改成了PBM格式。这可以从图片数组__MAINLCD__IDLESCREEN__STATUSICONS__SI_ALARM_BMP里的元素中看到,该BUFFER第一个元素说明的是文件的类型,BMP文件类型是1,PBM类型为28,各种文件类型的对应的值都在文件gdi_const.h中定义。虽然他本质上PBM和BMP没有什么不同,但在显示时,速度上却比BMP快上了许多,由于MTK对PBM的特殊处理,使其在使用时省掉了对BMP解析时间,可以直接拷贝到LCD的BUFFER中显示。想研究详细转化过程的朋友可以研究一下bmploader.c文件。

对文件custimgdatahw.h的研究,可以使我们更深入的了解MTK的图片资源的使用过程,以助于我们解决各种各样的问题。同时也可以自己写程序把图片转为数组BUFFER,减轻我们在编绎资源时漫长的等待过程,这在程序调试阶段是十分有用的。而节约时间和当前许多公司低成本快速出货的理念也是符合的。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-9 02:30 , Processed in 0.043921 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表