近期做一个嵌入式UI界面,框架使用ucgui。做的差不多了,发现整个模块生成的bin文件过大,烧不到单板里去,头都大了。
经调试发现,是因为ucgui里使用的bmp图片太多了,一张图片都有几十K那么多,这可比上万行代码量了。找到了原因,那就想
办法解决吧。
一,使用Flash方案。有同事提醒说,要不把图片都保存到Flash里,代码执行时再去flash里去读。考虑到一个模块的代码和
资源却要分开,放到不同的地方,感觉不十分合理,那有没有更好的办法呢?
二,优化图片大小。设备开机要播放一个动画,一共九张图片,那能不能对每张图片进行裁剪,尽量使用每张图片达到最小化呢?
经过仔细分析,切图,最后效果还真不多,九张图片原始大小1.2M,最后减小到了0.3M。还是很有效果的。
三,优化图片代码。设备启动时,bom里要播放一张静态logo,这张logo却消耗了20K的空间。那怎么对单个图片进行优化呢。
由于我们的logo是很有规律的,下半部分是上半部分旋转180的效果,那能不能图片的代码只保存一半,另一半通过算法来计算得出
呢?经过尝试终得所愿。代码如下,供大家分享。
//上半部分图片代码略
//下半部分数组声明
static unsigned short aclogo8_down[5000];
GUI_CONST_STORAGE GUI_BITMAP bmlogo8_down = {