Lvgl之图片bin格式显示方法
本帖最后由 阿里兄 于 2020-10-28 17:43 编辑Lvgl之图片bin格式显示方法
1、使用LvglImgTool转换一个bin格式的图片文件。
2、加载bin文件到SDRAM或SRAM中,如没有大内存无法使用bin格式图片。
3、为方便测试,图片bin文件为方便测试已使用bin2c转成数组了,实际项目需读取到SDRAM中。
4、申请一个lv_img_dsc_t图片变量,然后直接填充变量的内容即可,直接上代码如下。
#include "lvgl/lvgl.h"
const unsigned char _aclanbogini;//图片bin文件为方便测试已使用bin2c转成数组了
lv_img_dsc_t image_bin1;//申请一个图片资源变量
void lvgl_test(void)
{
lv_img_header_t *p_hd = (lv_img_header_t*)_aclanbogini;//前面4字节就是bin格式的头信息
image_bin1.header.cf = p_hd->cf;//设置图片的格式
image_bin1.header.always_zero = 0;
image_bin1.header.w = p_hd->w;//设置图片的宽
image_bin1.header.h = p_hd->h;//设置图片的高
image_bin1.data_size = sizeof(_aclanbogini)-sizeof(lv_img_header_t);//设置图片的数据字节大小
image_bin1.data = &_aclanbogini;//设置图片的数据指针
lv_obj_t *scr = lv_disp_get_scr_act(NULL);/* 获取当前屏幕 */
lv_obj_t *image = lv_img_create(scr,NULL);/* 创建 image 控件 */
lv_img_set_src(image,&image_bin1); /* 为控件设置图片 */
lv_obj_align(image,NULL,LV_ALIGN_IN_TOP_MID,0,0);/* 设置控件的对齐方式,相对坐标 */
}
5、显示效果如下。
图片能存在SPI Flash 读取吗,这又大概是怎样的思路 Huang0000 发表于 2020-12-3 18:33
图片能存在SPI Flash 读取吗,这又大概是怎样的思路
LVGL图片显示必需是存储在能够直接寻址的介质上,如内部RAM、SDRAM或QSPI FLASH的内存映射模式才行,单纯的SPI FLASH不支持,要读取到内存中。 阿里兄 发表于 2020-12-4 08:52
LVGL图片显示必需是存储在能够直接寻址的介质上,如内部RAM、SDRAM或QSPI FLASH的内存映射模式才行,单纯 ...
那这样,如果MCU本身的Flash就不够为SPI Flash中的数据开创建所需的内存空间了,这是不是就行不通了呢,我测试了一下,我定义一个数组,将SPI Flash的图片数据读取出来,编译报错空间不足。 Huang0000 发表于 2020-12-4 11:12
那这样,如果MCU本身的Flash就不够为SPI Flash中的数据开创建所需的内存空间了,这是不是就行不通了呢, ...
是的,小资源的硬件建议用一下图标字体就可以了 楼主,可有研究过LVGL加载外部的jpg和BMP图片啊,搞了好几天了,没搞出来,求指导啊 981378640 发表于 2021-4-21 21:07
楼主,可有研究过LVGL加载外部的jpg和BMP图片啊,搞了好几天了,没搞出来,求指导啊 ...
没有研究过,官网好像有png的用法
页:
[1]