2024-07-02
GR5526 GUI专题(4) - Lvgl字体的位图数组合并转换为bin文件的说明
写技术文章
精选推荐
nix
一、工具介绍
Lvgl 官方提供了一个图片转换工具
但由于不方便批量转换、不能同时支持多种格式转换、不能同时生成bin 和描述符文件等原因, 相对只适合用于Demo性环境, 不适合于生产性环境。 因此额外提供了一个小工具 GrLvglImageTool。
具备以下特点:
GR5526 用户可以使用这个工具, 进行图片资源和描述性源码的快速生成, 然后应用到Lvgl 项目。
二、生成图片资源
用户通过如下步骤, 进行图片资源的生成
GR5526 优化版Lvgl, 为了渲染性能的优化处理,对图片有如下要求:
2. 组织图片目录格式
图片资源准备好后, 再按照如下要求, 放置到不同的目录下
3. 进行资源生成
对于工具, 只需要使用 图中勾选的 GdPath 行功能即可. 其他功能不需要关心或已弃用
三、生成资源文件的使用
这个操作很简单, 将上文生成的.bin 文件, 使用 Goodix 提供的资源烧写工具 Gprogrammer 烧写到外部Flash 相应的偏移地址即可. (0x0000 就是从0地址开始烧写). Gprogrammer 工具可以从Goodix官网下载到, 其使用也有专门的文档进行介绍说明.
只需要注意这个实际烧写的Flash设备和偏移地址要和源码描述符文件对应上, 否则可能得不到预想的效果.
2. 根据项目实际情况调整 源码描述符文件
截图源码描述符文件部分代码如下:
lv_img_dsc_list.h
#ifndef
__LV_IMG_DSC_LIST_H__
#define
__LV_IMG_DSC_LIST_H__
#define ADDR_OFFSET_0000 0x00
#define ADDR_BLACK_CLOCK_FACE (ADDR_OFFSET_0000 + 0x04)
#define ADDR_BLACK_CLOCK_THUMBNAIL (ADDR_OFFSET_0000 + 0x3F488)
#define ADDR_DAY_CALORIE (ADDR_OFFSET_0000 + 0x55A54)
…
LV_IMG_DECLARE(wd_img_black_clock_face);
LV_IMG_DECLARE(wd_img_black_clock_thumbnail);
LV_IMG_DECLARE(wd_img_day_calorie);
….
#endif
lv_img_dsc_list.c
#include
"lvgl.h"
#include
"gr55xx_hal.h"
#include
"lv_img_dsc_list.h"
const
lv_img_dsc_t wd_img_black_clock_face =
{
.header.always_zero = 0,
.header.w = 360,
.header.h = 360,
.data_size = 259200,
.header.cf = LV_IMG_CF_GDX_RGB565,
.data = (uint8_t*)(QSPI0_XIP_BASE +
ADDR_BLACK_CLOCK_FACE),
};
…
const
lv_img_dsc_t wd_img_APPLIST_06_SLEEP =
{
.header.always_zero = 0,
.header.w = 72,
.header.h = 72,
.data_size = 20736,
.header.cf = LV_IMG_CF_TRUE_COLOR,
.data = (uint8_t*)(QSPI0_XIP_BASE +
ADDR_APPLIST_06_SLEEP),
};
…
const
lv_img_dsc_t wd_img_APPLIST_00_MENU =
{
.header.always_zero = 0,
.header.w = 72,
.header.h = 72,
.data_size = 2592,
.header.cf = LV_IMG_CF_GDX_TSC4,
.data = (uint8_t*)(QSPI0_XIP_BASE +
ADDR_APPLIST_00_MENU),
};
…
const
lv_img_dsc_t
wd_img_APPLIST_03_HEARTRATE = {
.header.always_zero = 0,
.header.w = 72,
.header.h = 72,
.data_size = 31104/8,
.header.cf = LV_IMG_CF_GDX_TSC6a,
.data = (uint8_t*)(QSPI0_XIP_BASE +
ADDR_APPLIST_03_HEARTRATE),
};
3. 将源码.c/.h 文件嵌入Lvgl 工程, 就可以进行图片资源的使用和索引了. 其用法和 Lvgl 官方的用法一致.
lv_obj_t* img1 =
lv_img_create(obj);
lv_img_set_src(img1,
&wd_img_digital2_heart_small);
lv_obj_set_pos(img1,
160, 270);
附:
打开微信,使用“扫一扫”即可关注