里飞网

 找回密码
 立即注册
查看: 9061|回复: 6
打印 上一主题 下一主题

Lvgl之图片bin格式显示方法

[复制链接]

45

主题

288

帖子

2478

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2478
跳转到指定楼层
楼主
发表于 2020-10-28 17:41:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 阿里兄 于 2020-10-28 17:43 编辑

Lvgl之图片bin格式显示方法



1、使用LvglImgTool转换一个bin格式的图片文件。

2、加载bin文件到SDRAM或SRAM中,如没有大内存无法使用bin格式图片。

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


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. }
复制代码


5、显示效果如下。





回复

使用道具 举报

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
沙发
发表于 2020-12-3 18:33:55 | 只看该作者
图片能存在SPI Flash 读取吗,这又大概是怎样的思路
回复

使用道具 举报

45

主题

288

帖子

2478

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2478
板凳
 楼主| 发表于 2020-12-4 08:52:02 | 只看该作者
Huang0000 发表于 2020-12-3 18:33
图片能存在SPI Flash 读取吗,这又大概是怎样的思路

LVGL图片显示必需是存储在能够直接寻址的介质上,如内部RAM、SDRAM或QSPI FLASH的内存映射模式才行,单纯的SPI FLASH不支持,要读取到内存中。
回复

使用道具 举报

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
地板
发表于 2020-12-4 11:12:36 | 只看该作者
阿里兄 发表于 2020-12-4 08:52
LVGL图片显示必需是存储在能够直接寻址的介质上,如内部RAM、SDRAM或QSPI FLASH的内存映射模式才行,单纯 ...

那这样,如果MCU本身的Flash就不够为SPI Flash中的数据开创建所需的内存空间了,这是不是就行不通了呢,我测试了一下,我定义一个数组,将SPI Flash的图片数据读取出来,编译报错空间不足。
回复

使用道具 举报

45

主题

288

帖子

2478

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2478
5#
 楼主| 发表于 2020-12-4 12:36:04 | 只看该作者
Huang0000 发表于 2020-12-4 11:12
那这样,如果MCU本身的Flash就不够为SPI Flash中的数据开创建所需的内存空间了,这是不是就行不通了呢, ...

是的,小资源的硬件建议用一下图标字体就可以了
回复

使用道具 举报

2

主题

11

帖子

46

积分

新手上路

Rank: 1

积分
46
6#
发表于 2021-4-21 21:07:28 | 只看该作者
楼主,可有研究过LVGL加载外部的jpg和BMP图片啊,搞了好几天了,没搞出来,求指导啊
回复

使用道具 举报

45

主题

288

帖子

2478

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2478
7#
 楼主| 发表于 2021-4-21 21:14:17 | 只看该作者
981378640 发表于 2021-4-21 21:07
楼主,可有研究过LVGL加载外部的jpg和BMP图片啊,搞了好几天了,没搞出来,求指导啊 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-4-19 21:01 , Processed in 0.090881 second(s), 6 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表