LVGL学习(2):图片的转换和显示

news2024/11/26 18:42:12

我们在设计UI的过程中可能需要显示一些图片,本篇文章将介绍如何转换并显示一个固定的图片到lv_img中。

文章目录

  • 1 图片转换
    • 1.1 GUI Guider
    • 1.2 在线转换
  • 2 图片的显示

1 图片转换

和之前我写的一篇字体转换的文章一样:LVGL学习(1):中文字体的转换和汉字显示,图片的转换也有两种方法,也是GUI Guider和在线转换。

1.1 GUI Guider

使用GUI Guider来转换图片的格式并显示比较简单,如下图所示:
在这里插入图片描述
只需要点击Import,然后导入图片即可。接着在主界面添加一个img组件,然后就可以在右侧Attribute下的image中选择刚刚导入的图片,这样就可以了。
在这里插入图片描述
对于图片的尺寸,直接修改img组件的size即可。原图的大小为333x566px,为了保证图片的比例,可以根据实际情况对长和宽进行等比例缩放,以显示不同大小的图片,比如这里缩放三倍,则设置size为111x174px。
最后点击生成代码,GUI Guider就在/generated/images中生成了_1_111x174.c文件,即图片大小为111x174px对应的数组。

1.2 在线转换

LVGL官方提供了一个在线图片转换的工具:Online image converter
在这里插入图片描述
我们只需要上传图片文件,然后选择颜色格式和输出格式即可。其中颜色格式如果不需要透明通道的话,一般选择CF_TRUE_COLOR。而输出格式选择C array,即生成C语言数组。这个文件中会生成所有LV_COLOR_DEPTH的转换结果,包括RGB332RGB565RGB888等格式,然后根据LV_COLOR_DEPTH来决定使用哪个转换结果。


可以看到,对于在线转换来说,图片的大小需要自己提前缩放好,后面如果想修改则比较麻烦,所以我还是建议大家使用GUI Guider来生成图片对应的数组。

2 图片的显示

刚刚转换出来的图片文件,有两种保存方式,一种当然是随着程序一起编译保存在NOR Flash中,另外一种则是可以保存在Fatfs文件系统中。

对于第一种情况,我们需要使用LV_IMG_DECLARE来声明刚刚的图片,然后就可以使用lv_img_set_src显示图片了。

/* DECLARE的参数为C文件最下面的LV_ATTRIBUTE_LARGE_CONST类型的结构体变量名 */
LV_IMG_DECLARE(_1_111x174);
lv_img_set_src(ui->screen_img_1,&_1_111x174);

对于第二种情况来说,需要在前面的在线转换工具中选择你要输出的颜色深度,如RGB565,这样转换出来的就是图片对应的bin文件。而GUI Guider中有一个Convert按钮,一样可以转换图片为bin文件,但似乎只有透明通道的输出格式选择。
在这里插入图片描述
然后将这个bin文件拷贝到Fatfs文件系统中,假设拷贝在根目录下,就可以直接输入文件的路径即可显示。

lv_img_set_src(ui->screen_img_1,"3:/_1_111x174.bin");

当然,这种情况下需要根据自己的硬件初始化好Fatfs文件系统,然后将宏定义LV_USE_FS_FATFS 置1。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于牛顿拉夫逊的配电网潮流计算研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C++语法(23)-- 模拟实现unordered_set和unordered_map

C语法(22)---- 哈希表的闭散列和开散列_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130436178?spm1001.2014.3001.5501 1.重写HashTable 由于此时我们的实现与map跟set差不多,所以需要进行调整 1.重写节点…

html5前端学习

HTML5基本骨架 html标签 定义HTML文档&#xff0c;浏览器看到后就明白这个是HTML文档&#xff0c;所以其他元素要包裹在它里面&#xff0c;标签限定了文档的开始点和结束点。 <!DOCTYPE html> <html> </html> head标签 head标签用于定义文档的头部&…

实验篇(7.2) 05. 通过浏览器访问远端内网服务器 (SSL) ❀ 远程访问

【简介】直接将内网服务器映射成公网IP&#xff0c;可以方便的从任何地方访问服务器的指定端口&#xff0c;但是这种方式下&#xff0c;服务器是公开且暴露的。那有没有即方便、又比较安全的远程访问服务器的方法呢&#xff1f;我们来看看SSL VPN的Web模式。 SSL VPN介绍 从概念…

波司登云原生微服务治理探索

作者&#xff1a;曾孟琪&#xff08;山猎&#xff09; 背景 波司登创始于1976年&#xff0c;专注于羽绒服的研发、设计、制作&#xff0c;是全球知名的羽绒服生产商。波司登用一系列世人瞩目的辉煌成绩证明了自己的实力&#xff1a;连续26年全国销量领先&#xff0c;连续22年…

4种事务隔离级别 3种异常现象 死锁

4种事务隔离级别 & 3种异常现象 4种事务隔离级别和3种异常现象 事务隔离级别是指多个并发事务之间相互隔离的程度&#xff0c;用于控制事务对数据库的读取和写入操作的可见性和影响范围。在关系数据库管理系统&#xff08;RDBMS&#xff09;中&#xff0c;常见的事务隔离…

70. 爬楼梯解题思路

文章目录 题目解题思路 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1 阶 …

【原创】用 VisualGLM 进行AIGC多模识别和内容生成

最近几个月&#xff0c;整个AI行业的LLM&#xff08;大语言模型&#xff09;蓬勃发展&#xff0c;除了过去传统的纯文字的多模态能力的视觉语言模型&#xff0c;如 GPT-4&#xff0c;ImageBind等表现令人印象深刻。 ChatGLM-6B是中文用户使用非常舒服的一个开源中文LLM。2023年…

Nginx的Rewrite的运用

Rewrite 一、常用的Nginx正则表达式二、lication三、rewrite$request_uri&#xff1a;包含请求参数的原始URI&#xff0c;不包含主机名&#xff0c;如&#xff1a;http://www.kgc.com/abc/bbs/index.html?a1&b2 中的 /abc/bbs/index.php?a1&b2 $uri&#xff1a;这个变…

chatgpt赋能python:Python去除重复字符并排序

Python去除重复字符并排序 在日常编程工作中&#xff0c;我们常常需要对列表或字符串中的重复字符进行去除&#xff0c;并将剩余字符进行排序。Python是一门非常适合进行此类操作的语言&#xff0c;其内置的数据结构和函数可以让我们轻松应对这一需求。 介绍 当我们需要对一…

【六一】【海思SS528】GPIO寄存器操作 - 使能GPIO管脚输出高、低电平

目录 一、概述二、配置复用控制寄存器&#xff0c;使能GPIO功能三、配置GPIO_DIR寄存器&#xff0c;选择输出四、配置GPIO_DATA寄存器&#xff0c;输出高电平五、测试 一、概述 这篇文章根据海思SS528芯片提供的《22AP30 H.265编解码处理器用户指南.pdf》文档(文档路径&#xf…

MIT6.042学习笔记(一)——强归纳法,数论(1)

如果学生在学校里学习的结果是使自己什么也不会创造&#xff0c;那他的一生永远是模仿和抄袭。——列夫托尔斯泰 文章目录 引言强归纳法例题&#xff1a;拆积木游戏证明 数论&#xff08;第一节&#xff09;整除运算例题&#xff1a;取水证明 公约数例题证明 Eucild算法 引言 …

C语言-static的用法

1、static 关键字 C 语言中 static 关键字修饰变量和函数。 static有三种不同的用法&#xff1a; 1.修饰局部变量&#xff1b; 2.修饰全局变量&#xff1b; 3.修饰函数 局部变量:当函数第一被调用&#xff0c;函数中的静态局部变量被初始化&#xff0c;再次调用这个函数&…

gcc/g++

文章目录 sudo 提权添加白名单gcc / g预处理编译汇编链接 sudo 提权添加白名单 1.寻找root用户 在 /etc/sudoers 文件中修改 添加普通用户的白名单 :/root找到root的白名单所在行数 2.wq!强制保存退出&#xff0c;即可添加成功 gcc / g 推荐写法 gcc mycode.c -o mytest预…

Python绘制柱状图堆叠图

本文详细介绍如何使用 Matplotlib 绘制柱状堆叠图 文章目录 一、引入库二、数据准备三、绘制基本柱状堆叠图1.绘制基本图形2.设置柱子宽度、添加刻度标签和旋转角度 四、完整代码五、运行结果六、python绘图往期系列文章目录 一、引入库 import matplotlib.pyplot as plt imp…

Hyperledger Fabric 超级账本学习【14】Fabcar实例——通过 Nodejs命令 调用链码

文章目录 Hyperledger Fabric2.X 网络 以后对应的 Node Npm 版本需要升级&#xff0c;默认版本太低&#xff0c;后面会报错启动 Fabcar 网络报错运行以下命令来杀死当前运行或者活跃的容器&#xff1a;清除所有缓存网络&#xff1a;添加映射文件进入javascript目录在此文件夹内…

初阶数据结构(7)(树形结构的概念和相关重要定义、树的表示形式、树的应用、二叉树【两种特殊的二叉树、性质、存储、遍历、基本操作、二叉树相关的 OJ 题】)

接上次博客&#xff1a;初阶数据结构&#xff08;6&#xff09;&#xff08;队列的概念、常用的队列方法、队列模拟实现【用双向链表实现、用数组实现】、双端队列 (Deque)、OJ练习【用队列实现栈、用栈实现队列】&#xff09;_di-Dora的博客-CSDN博客 目录 树形结构的概念 …

DPDK官方文档说明

目录 1、Release Notes 2、Getting Started Guide for Linux/FreeBSD/Windows 3、Programmer’s Guide 4、API Reference 5、Sample Applications User Guide 6、DPDK Tools User Guides 7、Testpmd Application User Guide 8、Network Interface Controller Drivers …

网站优化,如何挖掘长尾关键词?

做网站优化来说&#xff0c;挖掘一些长尾关键词的重要性是非常大的&#xff0c;因为长尾关键词给我们带来的流量可能会超过我们的主关键词。如何挖掘长尾关键词&#xff0c;挖掘长尾关键词的的方式有哪些是一个重要的问题。 长尾词挖掘方式&#xff1a; 【1】使用长尾词挖掘工…

机器学习——线性回归、梯度下降

文章目录 一、机器学习的分类二、线型回归Linear regression&#xff08;单变量线性回归&#xff09;三、代价函数3.1 建模误差3.2 平方误差代价函数 Squared error cost function3.3 梯度下降3.4 梯度下降与线性回归相结合 一、机器学习的分类 监督学习&#xff1a;学习数据带…