里飞网

标题: Lvgl之图片bin格式显示方法 [打印本页]

作者: 阿里兄    时间: 2020-10-28 17:41
标题: Lvgl之图片bin格式显示方法
本帖最后由 阿里兄 于 2020-10-28 17:43 编辑

Lvgl之图片bin格式显示方法



1、使用LvglImgTool转换一个bin格式的图片文件。
(, 下载次数: 1280)
2、加载bin文件到SDRAM或SRAM中,如没有大内存无法使用bin格式图片。

3、为方便测试,图片bin文件为方便测试已使用bin2c转成数组了,实际项目需读取到SDRAM中
(, 下载次数: 1232)

4、申请一个lv_img_dsc_t图片变量,然后直接填充变量的内容即可,直接上代码如下
  1. #include "lvgl/lvgl.h"


  2. const unsigned char _aclanbogini[1600004UL];//图片bin文件为方便测试已使用bin2c转成数组了

  3. lv_img_dsc_t image_bin1;//申请一个图片资源变量

  4. void lvgl_test(void)
  5. {
  6.     lv_img_header_t *p_hd = (lv_img_header_t*)_aclanbogini;//前面4字节就是bin格式的头信息
  7.     image_bin1.header.cf = p_hd->cf;//设置图片的格式
  8.     image_bin1.header.always_zero = 0;
  9.     image_bin1.header.w = p_hd->w;//设置图片的宽
  10.     image_bin1.header.h = p_hd->h;//设置图片的高
  11.     image_bin1.data_size = sizeof(_aclanbogini)-sizeof(lv_img_header_t);//设置图片的数据字节大小
  12.     image_bin1.data = &_aclanbogini[sizeof(lv_img_header_t)];//设置图片的数据指针

  13.     lv_obj_t *scr = lv_disp_get_scr_act(NULL);/* 获取当前屏幕 */
  14.     lv_obj_t *image = lv_img_create(scr,NULL);/* 创建 image 控件 */
  15.     lv_img_set_src(image,&image_bin1); /* 为控件设置图片 */
  16.     lv_obj_align(image,NULL,LV_ALIGN_IN_TOP_MID,0,0);/* 设置控件的对齐方式,相对坐标 */
  17. }
复制代码
(, 下载次数: 1244)

5、显示效果如下。
(, 下载次数: 1272)





作者: Huang0000    时间: 2020-12-3 18:33
图片能存在SPI Flash 读取吗,这又大概是怎样的思路
作者: 阿里兄    时间: 2020-12-4 08:52
Huang0000 发表于 2020-12-3 18:33
图片能存在SPI Flash 读取吗,这又大概是怎样的思路

LVGL图片显示必需是存储在能够直接寻址的介质上,如内部RAM、SDRAM或QSPI FLASH的内存映射模式才行,单纯的SPI FLASH不支持,要读取到内存中。
作者: Huang0000    时间: 2020-12-4 11:12
阿里兄 发表于 2020-12-4 08:52
LVGL图片显示必需是存储在能够直接寻址的介质上,如内部RAM、SDRAM或QSPI FLASH的内存映射模式才行,单纯 ...

那这样,如果MCU本身的Flash就不够为SPI Flash中的数据开创建所需的内存空间了,这是不是就行不通了呢,我测试了一下,我定义一个数组,将SPI Flash的图片数据读取出来,编译报错空间不足。
作者: 阿里兄    时间: 2020-12-4 12:36
Huang0000 发表于 2020-12-4 11:12
那这样,如果MCU本身的Flash就不够为SPI Flash中的数据开创建所需的内存空间了,这是不是就行不通了呢, ...

是的,小资源的硬件建议用一下图标字体就可以了
作者: 981378640    时间: 2021-4-21 21:07
楼主,可有研究过LVGL加载外部的jpg和BMP图片啊,搞了好几天了,没搞出来,求指导啊
作者: 阿里兄    时间: 2021-4-21 21:14
981378640 发表于 2021-4-21 21:07
楼主,可有研究过LVGL加载外部的jpg和BMP图片啊,搞了好几天了,没搞出来,求指导啊 ...

没有研究过,官网好像有png的用法




欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3