当前位置: 首页 > news >正文

MTK的图片资源的修改与替换

MTK的图片修改比较简单,图片文件一般都放在plutommi\Customer\Images文件夹下,在该文件夹下,图片又分为两类,一类是放在压缩包里,一类是放在该目录下的文件夹里不压缩的文件。比如Default.bmp和EmptyImage.bmp,就直接放在该文件夹下,有一些SP为了修改方便,也会直接放在文件夹里,而不放在压缩包里,以和MTK系统图片相区分。但这两种文件,在使用上完全一样,调用时一般都是通过ID(gdi_image_draw_id)或者图片路径使用(gdi_image_draw_file)。因为压缩包里的文件在编译时会自动解压到MainLCD文件夹时,所以我们添加图片时,使用的路径不是IMAGE压缩包,而是MainLCD。

MTK支持的图片类型比较广泛,bmp,gif,png,jpg等都支持,还有MTK自己特别的文件格式PBM。调用的方式也十分灵活,可以通过ID(gdi_image_draw_id),也可以通过文件(gdi_image_draw_file),还可以通过文件BUFFER(gdi_image_draw)。但其实调用的最终形式还是gdi_image_draw,不管是文件也好,ID也好,最终都会转为BUFFER调用。这也就是最后我们在MTK文件custimgdatahw.h中看到的数组,我们不管是添加压缩包,还是直接搞在文件夹里的图片,最后都会生成图片数组,放在文件custimgdatahw.h里,文件custimgdatahw.h里定义了系统使用过所有图片的数组,也就是gdi_image_draw使用的所谓BUFFER。说到这一步,许多人就会明白了,似乎总是有一些图片,我们在手机里能看到,在图片文件夹里怎么找也找不到,遇到想替换的情况,费时费力,却只能求救于别人。原因就在于,有一些图片是没有资源的,只有一个数组BUFFER,要想替换,只能找到这个数组。因为MTK最终在系统中画图使用的不是资源,而是这些资源的数组BUFFER,资源只是给人们修改方便而提供的参照。

要修改这些没有资源只有资源数组的东西,只有经验,没有别的技巧。幸运的一点是,这些只有数组没有资源的图片大都集中在文件themecomponents.h中,并且大概只有有限的几个地方会这样调用,大都是一些常见的Theme风格相关的内容,如窗口背景,TITLE背景,SOFT背景,高亮条,状态条背景等。当然有些公司为了修改的方便,把这些令人痛苦东西的做了些改进,一是不使用THEME功能,所有的窗口背景,TITLE背景,SOFT背景,高亮条,状态条背景要么自绘,要么使用资源自己画,要么直接使用custimgdatahw.h里的数组,经过这样的改进,修改维护显然是方便了很多。但这也就造成网上有朋友问我窗口背景图片或者SOFTKEY背景怎么修改时,我无法回答的原因,需要根据不同公司习惯和代码实际情况来分析。一个简单的方法是把某些怀疑对象从数组还原成资源文件进行比对查看,具体实现过程可以参考我的文章《反其道而行之,从数组到资源》。当然如果你对themecomponents.h以及该文件内一些常见的资源BUFFER足够了解,完全可以一步到位。因为这些文件各个公司虽然略有不同,但同一个公司内部却是相对稳定的,改过一次后,有了经验,下次就能闭着眼睛来改了。

顺便提一下常用资源中的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,减轻我们在编绎资源时漫长的等待过程,这在程序调试阶段是十分有用的。而节约时间和当前许多公司低成本快速出货的理念也是符合的。

如果你想制作MTK图片生成工具,请参考我在CSDN的文章《写一个简单的MTK图片管理工具》

http://blog.csdn.net/blogercn/archive/2009/08/23/4475981.aspx

相关文章:

  • [转]节省 3/4 的设计时间:14个设计神器
  • 转载一篇 EMI整改经验
  • Linux TIME_WAIT 太多 优化 解决
  • Sql Server 性能分析1 –查看数据库的相关信息
  • 某游戏公司的MYSQL配置文件
  • CentOS7 之系统优化方案
  • 存储过程中的行集作为子查询
  • CentOS6 下安装RabbitMQ和ErLang
  • MTK工作中可以使用的批处理脚本
  • PHP排列组合算法
  • 通信运营商如何理性应对带号转网(1)
  • 使用MySQL触发器自动生成日汇总表
  • C#使用DES加解密数据
  • Install nodejs on CentOS 7+
  • WindowsMobile上C#通过DirectShow控制摄像头
  • 《Java编程思想》读书笔记-对象导论
  • Android框架之Volley
  • CentOS7 安装JDK
  • JS学习笔记——闭包
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Python_网络编程
  • Redis的resp协议
  • uni-app项目数字滚动
  • Vue组件定义
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 数据科学 第 3 章 11 字符串处理
  • 项目管理碎碎念系列之一:干系人管理
  • 一些css基础学习笔记
  • HanLP分词命名实体提取详解
  • 阿里云移动端播放器高级功能介绍
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #、%和$符号在OGNL表达式中经常出现
  • #HarmonyOS:基础语法
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (c语言+数据结构链表)项目:贪吃蛇
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (十)T检验-第一部分
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • **PHP分步表单提交思路(分页表单提交)
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [7] CUDA之常量内存与纹理内存
  • [AI 大模型] 百度 文心一言