一种电子设备的图片显示方法及系统与流程

文档序号:24410833发布日期:2021-03-26 19:17阅读:105来源:国知局
一种电子设备的图片显示方法及系统与流程

[0001] 本申请涉及一种采用嵌入式系统(embedded system)的电子设备的图片显示方法,特别是涉及一种存储空间有限的采用嵌入式系统的电子设备的图片显示方法。


背景技术:

[0002]
儿童手表是一种典型的采用嵌入式系统的电子设备。儿童手表主要用来实现定位功能,定位功能主要依赖于gps(global positioning system,全球定位系统)等卫星定位技术、移动通讯网络的基站定位技术、wifi(无线网络)定位技术等。有些儿童手表仅支持2g移动通讯网络,另一些儿童手表则最高支持4g移动通讯网络。4g移动通讯网络的modem(modulator

demodulator,调制解调器)代码比2g移动通讯网络的modem代码体积更大。为了节省成本,儿童手表通常采用有限的存储空间,例如为16mb的闪存(flash)存储器。此时,支持4g移动通讯网络的儿童手表就必须压缩gui(graphic user interface,图形用户界面)的存储空间。儿童手表需要丰富的图片来吸引孩子喜欢,如何使图片保存空间最小化就成为节省成本的关键因素。
[0003]
目前采用嵌入式系统的电子设备使用的gui方案主要有两种,高端的电子设备使用安卓(android)gui系统框架,低端的电子设备则使用minigui系统框架。安卓gui系统框架的代码量大,无法在存储空间有限的电子设备中保存。minigui系统框架的功能老旧,画面效果不够丰富,而且代码体积还是不够小。


技术实现要素:

[0004]
本申请所要解决的技术问题是提供一种采用嵌入式系统的电子设备的图片显示方法,一方面实现图片保存时最节省空间,另一方面实现图片在电子设备上正常显示。
[0005]
为解决上述技术问题,本申请提出了一种电子设备的图片显示方法,包括如下步骤。步骤s10:电子设备采用轻量通用图形库lvgl作为图形用户界面gui系统框架,在lvgl系统框架中增加png格式的图片的解码功能,并对接lvgl系统框架的绘图接口。步骤s20:电子设备将图片改为带透明度的png8格式保存为c语言的数组数据结构,再作为系统固件的一部分保存到电子设备中。步骤s30:电子设备解码带透明度的png8格式的图片并逐行在电子设备的屏幕上显示。lvgl系统框架具有代码量小的特点,但是不支持解码png格式的图片。本申请在lvgl系统框架中增加了解码png图片功能,同时将系统固件中的图片均保存为png格式,从而最大程度地减少电子设备的系统固件的存储空间。
[0006]
进一步地,所述步骤s10中,所述增加png格式的图片的解码功能是指:增加通用图片解码器、png图片解码器和解码png图片所需的解码库;所述通用图片解码器用于扩展解码各种图片;所述png图片解码器用于解码png格式的图片。这用来在原本不支持解码png图片的lvgl系统框架中增加解码png图片的功能。
[0007]
进一步地,所述通用图片解码器提供了链表机制,链表挂载了png图片解码器。这给出了通用图片解码器与png图片解码器之间的一种具体实现方式。
[0008]
进一步地,所述步骤s20中,图片采用带透明度的平面化png8格式保存。平面化png格式比fireworks png格式的体积更小,而且去除的都是多余信息,对显示效果无影响。
[0009]
进一步地,所述步骤s20中,所述c语言的数组数据结构中包括解码标识,解码标识表明图片是带透明度的png8格式。解码标识是lvgl系统框架的c语言的数组数据结构中原本就有的,由于本申请更改了图片保存格式,因此解码标识也需要做相应修改,以使lvgl系统框架的绘图接口能够根据解码标识正确地解码显示图片。
[0010]
进一步地,所述步骤s30包括如下步骤。步骤s32:电子设备调用解码带透明度的png8格式的图片所需的解码库。步骤s34:电子设备使用png图片解码器解码带透明度的png8格式的图片,按行返回二进制的位图数据。步骤s36:电子设备使用通用图片解码器把解码后的图片的一行的位图数据输出到内存。步骤s38:电子设备使用lvgl系统框架的绘图接口逐行在电子设备的屏幕上进行绘图显示。这是如何解码显示png图片的一种优选实现方式。
[0011]
本申请还提出了一种电子设备的图片显示系统,包括gui调整单元、保存单元和解码显示单元。所述gui调整单元采用lvgl作为gui系统框架,在lvgl系统框架中增加png格式的图片的解码功能,并对接lvgl系统框架的绘图接口。所述保存单元用来将图片以带透明度的png8格式保存为c语言的数组数据结构,再作为系统固件的一部分保存到电子设备中。所述解码显示单元用来解码带透明度的png8格式的图片并逐行在电子设备的屏幕上显示。lvgl系统框架具有代码量小的特点,但是不支持解码png格式的图片。本申请在lvgl系统框架中增加了解码png图片功能,同时将系统固件中的图片均保存为png格式,从而最大程度地减少电子设备的系统固件的存储空间。
[0012]
进一步地,所述gui调整单元增加png格式的图片的解码功能是指在lvgl系统框架中增加了通用图片解码器、png图片解码器和解码png图片所需的解码库;所述通用图片解码器用于扩展解码各种图片;所述png图片解码器用于解码png格式的图片。这用来在原本不支持解码png图片的lvgl系统框架中增加解码png图片的功能。
[0013]
进一步地,所述保存单元将c语言的数组数据结构中的解码标识改为表明图片是带透明度的png8格式。平面化png格式比fireworks png格式的体积更小,而且去除的都是多余信息,对显示效果无影响。
[0014]
进一步地,所述解码显示单元包括解码库、png图片解码器、通用图片解码器和绘图接口;所述解码库是指解码带透明度的png8格式的图片所需的解码库;所述png图片解码器用来解码带透明度的png8格式的图片,按行返回二进制的位图数据;所述通用图片解码器把解码后的图片的一行的位图数据输出到内存;所述绘图接口是指lvgl系统框架的绘图接口,用来逐行在电子设备的屏幕上进行绘图显示。这是解码显示单元的一种优选实现方式。
[0015]
本申请取得的技术效果是以最大程度地减小电子设备的系统固件的体积为前提,提出了系统固件中的图片保存与显示的实现方案,同时能节省内存空间。
附图说明
[0016]
图1是本申请提出的电子设备的图片显示方法的流程图。
[0017]
图2是步骤s30的具体实现方式的流程图。
[0018]
图3是本申请提出的电子设备的图片显示系统的结构示意图。
[0019]
图4是解码显示单元30的具体结构示意图。
[0020]
图中附图标记说明:10为gui调整单元、20为保存单元、30为解码显示单元、32为解码库、34为png图片解码器、36为通用图片解码器、38为绘图接口。
具体实施方式
[0021]
请参阅图1,本申请提出的电子设备的图片显示方法包括如下步骤。
[0022]
步骤s10:电子设备采用lvgl(light and versatile graphics library,轻量通用图形库)作为gui系统框架,在lvgl系统框架中增加png格式的图片的解码功能,并对接lvgl系统框架的绘图接口。lvgl系统框架具有代码量小、易于ui(user interface,人机界面)开发的特点,在16mb大小的闪存存储器中就能保存。
[0023]
现有的lvgl系统框架中,图片保存形式是真彩色(true color)的位图(bitmap)格式保存为c语言的数组(array)数据结构。这种保存形式的图片作为输入源时,lvgl系统框架不用解压,可以直接读入内存由lvgl系统框架的绘图接口予以显示,但是其占用的代码存储空间很大。
[0024]
本申请在lvgl系统框架中增加png格式的图片的解码功能,具体而言是增加了通用图片解码器、png图片解码器和解码png图片所需的解码库。例如,在lvgl系统框架的绘图接口的代码目录中增加了通用图片解码器,用于扩展解码各种图片。通用图片解码器提供了链表机制,链表挂载了png图片解码器。png图片解码器用于解码png格式的图片。
[0025]
步骤s20:电子设备将图片保存形式改为带透明度的png8格式保存为c语言的数组数据结构,再作为系统固件(firmware)的一部分保存到电子设备中。png8格式与位图格式相比,能够显著地缩小图片存储空间。例如,一个图片以位图格式保存需要16kb,改为png8格式保存仅需3至4kb。
[0026]
png是一种常见的采用无损压缩的图片格式。png可以细分为三种格式:png8、png24、png32,后面的数字代表这种png格式最多可以索引和存储的颜色值。“8”代表28也就是256色。png8格式对存储空间的使用最小,在手机或者儿童手表这种小屏幕的电子设备上的使用体验中已经不错了。png8格式支持透明度。优选地,选用带透明度的png8格式保存图片时选择平面化png格式。平面化png格式与fireworks png格式相比,可以去掉png文件中的辅助信息(ancillary information),更大程度地节省空间。
[0027]
现有的lvgl系统框架中,图片保存为c语言的数组数据结构,其中的解码标识表明图片是真彩色的位图格式。本申请也是将图片保存为c语言的数组数据结构,只是将解码标识改为表明图片是带透明度的png8格式。所述数组数据结构例如是lv_img_dsc_t结构体。所述解码标识例如是lv_img_dsc_t结构体中的header.cf字段的内容,header.cf字段的内容为lv_img_cf_raw_alpha则表明图片需要以带透明度的png8格式进行解码。
[0028]
步骤s30:电子设备解码带透明度的png8格式的图片并逐行在电子设备的屏幕上显示。这一步采用的逐行显示的机制比显示整个图片要节省内存。
[0029]
请参阅图2,所述步骤s30具体包括如下步骤。
[0030]
步骤s32:电子设备调用解码带透明度的png8格式的图片所需的解码库。
[0031]
步骤s34:电子设备使用png图片解码器解码带透明度的png8格式的图片,按行返
回二进制的位图数据。
[0032]
步骤s36:电子设备使用通用图片解码器把解码后的图片的一行的位图数据输出到内存。
[0033]
步骤s38:电子设备使用lvgl系统框架的绘图接口逐行在电子设备的屏幕上进行绘图显示。
[0034]
请参阅图3,本申请提出的电子设备的图片显示系统包括gui调整单元10、保存单元20和解码显示单元30。
[0035]
所述gui调整单元10采用lvgl作为gui系统框架,在lvgl系统框架中增加png格式的图片的解码功能,并对接lvgl系统框架的绘图接口。具体而言是在lvgl系统框架中增加了通用图片解码器、png图片解码器和解码png图片所需的解码库。
[0036]
所述保存单元20用来将图片以带透明度的png8格式保存为c语言的数组数据结构,再作为系统固件的一部分保存到电子设备中。所述数组数据结构中,解码标识表明图片是带透明度的png8格式,需要以带透明度的png8格式进行解码。
[0037]
所述解码显示单元30用来解码带透明度的png8格式的图片并逐行在电子设备的屏幕上显示。
[0038]
请参阅图4,所述解码显示单元30具体包括解码库32、png图片解码器34、通用图片解码器36和绘图接口38。所述解码库32是指解码带透明度的png8格式的图片所需的解码库。所述png图片解码器34用来解码带透明度的png8格式的图片,按行返回二进制的位图数据。所述通用图片解码器36把解码后的图片的一行的位图数据输出到内存。所述绘图接口38是指lvgl系统框架的绘图接口,用来逐行在电子设备的屏幕上进行绘图显示。
[0039]
本申请提出的电子设备的图片显示方法及系统选用带透明度的png8平面化格式保存图片,并把图片转成c数组的raw格式保存在系统固件的代码段,最大程度地节省了保存图片的存储空间,成功实现了在16mb的闪存存储器中保存支持4g移动通讯网络的儿童手表的固件。本申请在具有最小代码体积的lvgl系统框架上扩展出了png图片的解码功能,并对接lvgl系统框架的绘图接口,实现按行读取和显示解压后的位图数据,节省了内存空间。
[0040]
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1