LVGL 显示图片

LVGL 显示图片

  • LVGL显示图片
  • 1. 显示图片文件
  • 2. 显示C数组格式
  • 3. 显示RAM中的图像文件
  • 4. 图像符号显示
  • 5. 显示GIF动画
  • LVGL显示图片代码分析

LVGL显示图片

lvgl 8.3版本默认支持PNG,BMP,JPG,SJPG和GIF动图等格式的图片显示;
需要在lv_conf.h配置文件里使能对应图片的支持:
在这里插入图片描述
在这里插入图片描述

1. 显示图片文件

lv_obj_t *img= lv_img_create(lv_scr_act()); // 创建img对象
lv_img_set_src(img, "S:/images/1.jpg"); // 设置图像数据源,文件类型可以是:1.jpg, 1.sjpg, 1.png, 1.bmp
lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);  // 居中显示

2. 显示C数组格式

需要先使用LV_IMG_DECLARE(xxx) 声明要lv_img_dsc_t 类型的图像结构

	// 通过在线工具转换的图片数据const uint8_t img_lvgl_logo_map[] = {/*Pixel format: Blue: 2 bit, Green: 3 bit, Red: 3 bit, Alpha 8 bit */0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb,.......};	const lv_img_dsc_t img_lvgl_logo = {.header.always_zero = 0,.header.w = 42,.header.h = 43,.data_size = 1806 * LV_IMG_PX_SIZE_ALPHA_BYTE,.header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,.data = img_lvgl_logo_map,};LV_IMG_DECLARE(img_lvgl_logo);lv_img_set_src(obj, &img_lvgl_logo);

3. 显示RAM中的图像文件

	// 从TF卡读取jpeg图片到内存,再通过内存加载图片uint8_t *message_buf = NULL;message_buf = malloc(20*1024);if (message_buf == NULL) {log_e("message_buf malloc error\n");}lv_obj_t * img_play = lv_img_create(lv_scr_act());	lv_obj_set_pos(img_play, 0, 0);// lv_obj_set_size(img_play, 240, 240);FIL fp;unsigned int readLen;if (f_open(&fp, "images/11.jpg",   FA_READ) != FR_OK){log_e("open images/11.jpg error\n");} else {log_d("open images/11.jpg success\n");f_read(&fp, message_buf, RECEIVE_BUF_LEN, &readLen);f_close(&fp);        }lv_img_dsc_t img_dsc;img_dsc.header.cf = 0;img_dsc.header.always_zero = 0;img_dsc.header.w = 0;img_dsc.header.h = 0;img_dsc.data_size = readLen;	// 读取的图片文件数据长度img_dsc.data = message_buf; 	// 读取的图片文件数据lv_img_set_src(img_play, &img_dsc);	// 设置图片数据源

4. 图像符号显示

	// lv_symbol_def.hlv_obj_t *obj = lv_img_create(lv_scr_act());lv_img_set_src(obj, LV_SYMBOL_OK);// lv_img_set_src(img, LV_SYMBOL_DUMMY "Some text"); // 

5. 显示GIF动画

	// GIF动画lv_obj_t *gif = lv_gif_create(lv_scr_act());lv_gif_set_src(gif, "S:/images/1.gif");// lv_gif_restart(gif); // 重新播放GIF

LVGL显示图片代码分析

void lv_img_set_src(lv_obj_t * obj, const void * src) 设置图片数据源
在这里插入图片描述
在这里插入图片描述
void lv_img_set_src(lv_obj_t * obj, const void * src)函数 lv_img_decoder_get_info(src, &header);
在这里插入图片描述

在这里插入图片描述
_LV_LL_READ实际是通过宏定义的方式遍历调用解码器列表回调函数
在这里插入图片描述

void lv_extra_init(void)函数里初始化不同图片格式解码器
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286840.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 在线安装redis

1、远程仓库拉取redis镜像, docker pull redis,默认拉取最新版本 2、在本地宿主机文件夹下创建相关目录文件,供容器卷使用,创建 /usr/local/data/redisdocker/data 文件夹,准备一个纯净版 redis.conf 配置文件 &#x…

12V升18V4A同步升压恒压WT3210

12V升18V4A同步升压恒压WT3210 WT3210 是一款高功率密度的全集成同步升压转换器,内部集成的功率MOSFET管导通电阻为上管8mΩ和下管15mΩ。可为便携式系统提供空间小尺寸 解决方案。WT3210具有 2.7V 至 20V 的宽输入电压范围,应用在单节或两节锂电池的便携…

网宿配置cdn加速

1、商务谈妥后我们登录新注册的账号可以找到我们的服务 我们的服务叫“CDN Pro” 2、添加ssl证书 1)点击证书 2)新建证书 会有默认提示,名字自定义 将我们购买的证书上传后保存 3)结果如下 4)查询我们的证书详情 …

OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

一、AMD处理器win10系统下,DevEco Studio模拟器启动失败解决办法。 结论:在BIOS里面将Hyper-V打开,DevEco Studio模拟器可以成功启动。 二、ArkTS自定义组件导出、引用实现。 如果在另外的文件中引用组件,需要使用export关键字导…

数字化技术助力英语习得 iEnglish成智慧化学习新选择

日前,美剧《老友记》中钱德勒的扮演者马修派瑞去世的消息引发不少人的回忆杀。《老友记》官方发文悼念马修派瑞:“对于马修派瑞去世的消息,我们深感悲痛,他是给我们所有人的真正礼物,我们的心和他的家人、爱人、所有的粉丝在一起。” 作为不少国人刷剧学习英语的首选,《老友记…

【Linux】键盘高级操作技巧

命令行最为珍视的目标之一就是懒惰:用最少的击键次数来完成最多的工作。另一个目标是你的手指永 远不必离开键盘,永不触摸鼠标。因此,我们有必要了解一些键盘操作,使我们用起来更加的迅速和高效。 移动光标 在前面介绍过上下左右…

二叉搜索树 和 哈希表 (JAVA)

目录 二叉搜索树 二叉搜索树的插入 二叉搜索树的查找 二叉搜索树的删除 哈希表 哈希冲突 闭散列 线性探测法 二次探测法 开散列 开散列代码实现: 插入元素 删除元素 查找元素 二叉搜索树 先了解一下二叉搜索树是啥,概念如下&#xff1a…

VuePress安装及使用——使用 Markdown 创建你自己的博客网站和电子书

目录 前言一、依赖环境二、vuepress 安装和使用1.初始化2.将 VuePress 安装为本地依赖3. package.json 中添加脚本4. 新建 docs 文件夹5.启动6. 效果 三、进阶使用1.新增配置文件2.安装搜索插件3.config.js 中增加配置4.效果展示5.注意 四、使用主题1.安装2. 目录结构说明&…

基于YOLOv7算法的高精度实时红外行人目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法的高精度实时红外行人目标检测系统可用于日常生活中检测与定位红外行人目标,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法…

计算机网络2

OSI参考模型七层: 1.应用层 2.表示层 3.会话层 4.传输层 5.网络层 6.数据链路层 7.物理层 TCP/IP模型 5层参考模型

SVM —— 理论推导

SVM 支持向量线性可分最大间隔超平面最大间隔超平面的推导支持向量分类间隔的推导最优化问题 对偶问题拉格朗日乘子法强对偶性 SVM 优化软间隔解决问题优化目标及求解 核函数线性不可分核函数的作用常见核函数 SVM 算法优缺点 支持向量机(Support Vector Machine&am…

什么是 DDoS ?如何识别DDoS?怎么应对DDOS攻击

什么是DDOS攻击 DDoS攻击(Distributed Denial of Service Attack)即分布式拒绝服务攻击,是一种利用分布式网络来发起大量的请求,占用目标服务器或网络资源的攻击行为。这种攻击方式可以瘫痪目标系统,导致其无法正常提供…