嵌入式ui——lvgl显示图片

 在使用lvgl显示图片有两种方式,一种是使用文件系统显示,这种显示方式灵活,而且对cpu的占用资源也少。第二种是使用c数组的形式访问,这种占用资源比较大因此,图片不可以太大。尽量小,要不然堆栈会溢出。

 一、使用c数组显示图片

1.1在lvgl官网中导入图片转换成.c文件    

https://lvgl.io/tools/imageconverter //官网网址

1.2生成c文件

1.3将c文件导入工程中

1.4添加声明代码

LV_IMG_DECLARE(your_img);//此处输入c文件名字

1.5显示图片

 lv_obj_t *img = lv_img_create(obj);  // 在 obj 上创建图像对象
 lv_img_set_src(img, &your_img);  // 设置图像源
 lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);  // 图像居中显示

二、直接使用文件系统显示图片

2.1 挂载文件系统

这里使用的是posix,在lv_conf文件中找到

 LV_USE_FS_POSIX 0改为 LV_USE_FS_POSIX 1

LV_FS_POSIX_LETTER ’ ‘改为LV_FS_POSIX_LETTER ’P‘

后面两个分别为路径和缓冲区,可以不用设置。

2.2 启用解码器

这里启用了PNG解码器,在lv_conf中可以找到

启动解码器之后,记得在lvgl初始化的时候,同样对解码器进行初始化

lv_png_init();

2.3 显示图片

lv_obj_t *img = lv_img_create(left_obj);
lv_img_set_src(img, "P:/your/img"); // 替换为你的图片路径
lv_obj_align(img, LV_ALIGN_CENTER, 0, 0); // 图片居中对齐

文件路径开头,要以之前挂载文件系统时输的字母相同。

LV_FS_POSIX_LETTER ’P‘

所以,在这里我的路径为 P:/your/img

三、FAQ

 图片部分显示”No data“

1,若是使用的是c数组方法,可以考虑是内存不足导致无法显示,解决方法可以是选择小一点图片进行再次测试,或者在lv_conf文件中修改size大小

#define LV_MEM_SIZE (48U * 1024U)          /*[bytes]*/

2,若是使用的是文件直接访问,有可能是图片颜色位数不对导致,在解码器代码中,我们可以看到,在bmp解码器中,颜色深度需要为32位。可以使用不同解码器进行测试。

 

若是读者发现文章有什么问题,欢迎给博主留言指正!

end 

### 回答1: LVGL是一个开源的GUI库,它支持多种平台和嵌入式设备。在LVGL中,图像是一种特殊的资源,它可以用像素映射到GUI对象中。在软件开发中,将图像转换为C代码是一种常见的技术,因为它可以大大减少图像的文件大小,提高程序的运行效率。 LVGL为此提供了一个工具——Img2LCTS,可以将图像以C数组的形式导出,方便在代码中使用。 Img2LCTS的使用非常简单,首先我们需要将图像转换为LVGL支持的格式(支持BMP、PNG、GIF等格式)。然后运行img2lcts.exe工具。将图片文件拖放到工具窗口中,选择输出的C文件名和变量名称,点击转换就可以将图片转换为对应的C代码。 这个工具还支持将多个图片合并为一个C文件,支持抖动和半透明效果,适应不同的应用场景。通过Img2LCTS制作的图像可以直接插入到LVGL GUI中,具有良好的兼容性和可移植性。 总之,Img2LCTS是LVGL图像处理的一款非常实用的工具,它可以简化图像处理过程,让我们更快更方便地开发LVGL的GUI应用程序。 ### 回答2: 作为一种开源的GUI库,LVGL已经得到了广泛的关注和应用。其特点是轻量化、灵活性高,同时也有许多功能强大的控件和界面设计工具。在LVGL的世界里,图片是常见的一种 UI 资源。在工程中,我们通常会把图片资源转成 C 语言代码嵌入到程序中,以方便程序使用。而这个过程通常比较繁琐,萌生了将图片转成 C 语言代码的工具。 而 LVGL 本身并没有提供这样的工具,但是社区中有很多人开发了这类工具,可以完成将图片轻松转成 C语言代码的任务。其中,比较有代表性的是 "LittlevGL Image Converter" 工具。此工具能够支持 JPEG、PNG、BMP、GIF 以及其他一些主流图片格式。用户只需要通过简单的界面,选择图片并设置转换参数,即可将其转换成 LVGL 的格式代码。 此工具除了能够将图片转成 LVGL 的格式代码外,还支持调整图片的颜色深度并查看转换的效果。对于没有 C 语言基础的开发人员,工具还能够自动管理转换后图片代码的头文件和实现文件,并能够生成相应的 LVGL 函数来调用转换后的资源。对于需要调整图片缩放比例和调色的用户,该工具也提供了相应的设置选项,灵活性较高。 总体来看, LVGL图片转 C 语言工具不仅简单易用,而且功能强大。无论是初学者还是有经验的开发人员,使用该工具都能够大大提高工作效率。同时,还有许多社区成员在不断的完善和拓展该工具的功能,使其更加方便实用。对于 LVGL 的用户来说它值得信赖。 ### 回答3: lvgl图片转c语言工具是一款可以将图片转换为C语言代码的工具。它的作用是将图片生成为一组RGB、alpha值的二进制数据,并将这些数据转换为C语言代码,方便用户直接嵌入并使用。 这个工具使用了LVGL图形库目录下的img_conv工具,可以自动化地针对所需图片进行批量转换。用户可以通过简单的命令行操作来使用这个工具。比如,使用以下命令可以将.png图片转换为C语言代码:`img_conv img.png -r -cMyImage > my_image.c` 该工具提供了许多参数设置功能,如选择RGB编码、调整透明度等。可以根据需要进行更改,以满足用户对图片转换后的需求。 总的来说,通过使用这个工具,用户可以更方便地将图片转换为C语言代码,从而在项目中使用自己的图片资源,并节省开发时间和成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值