序列帧应用

一、序列帧介绍

序列帧功能旨在实现图片资源的高效整合与灵活展示,核心是将一组图片序列打包编译至单个 bin 文件内,支持单张图片按需显示,可通过动态指定或自动播放的方式呈现内容。该功能针对性解决两大实际应用难题:

  • 在处理由大量小图片构成的应用场景,如表盘数字显示、小型 icon 图标展示时,通过将众多图片合并为单一 bin 文件,显著减少文件数量,尤其在 nand 存储方案下,大幅提升图片资源的检索效率;

  • 在表盘在线安装等场景中,序列帧功能能够有效优化传输流程,显著提升数据传输效率,大幅缩短传输耗时,为用户带来更流畅的使用体验。

二、序列帧实现

  与常规图片资源相比,序列帧主要有一下区别

  1. 资源存放方式 图片序列资源存放在ezip目录下,并新建一个单独的子文件夹存放,文件夹名命名可以为以下三种(注意3个下划线):

  1. name + ___seq (从序号0开始)

  2. name + ___seq___ (同name + ___seq)

  3. name + ___seq___xxx (从序号xxx开始)。

fishy
  1. 文件命名规范 序列帧的图片文件按前缀+序列号的方式,序列号的位数要相等,位数不够的左边补零。如图片的总数在一百多张的情况,序列号的位数要有3位数才满足要求,序列号位个位数时因该为前缀_00X.png等。编译为一个bin文件时,工具会按最后的序列号依次排列成一个单独的bin文件。案例如下图

fishy
  1. 资源获取方式 资源获取主要通过接口void lv_img_set_src_seq(lv_obj_t * obj, const void * src, uint16_t no);接口参数说明如下:

  • obj – 为图片控件实例,通过lv_img_create(parent)创建;

  • src – 为序列帧路径,通过APP_GET_IMG(img_seq_name)获取,img_seq_name表示文件夹的名字,去掉___seq后缀。

  • no – 为图片在序列中的索引值,

lv_obj_t *img_seq = lv_img_create(p_clk_simple->bg);
lv_img_set_src_seq(img_seq, APP_GET_IMG(green_number), 0);
lv_obj_align(img_seq, LV_ALIGN_CENTER, 0, 0);

三、注意事项

  1. 序列帧文件夹名的后缀__seq的下划线为三个

  2. 序列帧文件夹下图片序列的编号位数要一致,不够的左边补零