lvgl 直接引用png图片

lvgl 除了可以通过将图片转换成二进制数组的方式显示到页面外,还提供了各种格式的第三方图片解码器,它可以直接使ui设计图给出的png图片显示到页面上,不需要进行手动去解码,非常方便快捷。

其主要的配置就是要在lv_conf.h文件配置相应的文件目录,如下图:

在windows 模拟器中就需要打开 LV_USE_FS_WIN32 选项,如果是Linux 环境就开启 LV_USE_FS_POSIX 。其中的 ’C' 是驱动器的代表名称,可以任意设置大写字母, LV_FS_WIN32_PATH 是图片存放的相对路径, 最后在页面代码中添加图片是:

 

最终模拟器上显示效果:

当然这种方式最大问题就是需要的芯片也得高级一点,不然在硬件上解码速度会很慢,页面看到的效果就会图片很久加载不出来。

LVGL 不支持直接播放视频,但可以通过将视频拆分成一系列PNG图像帧,然后使用LVGL的动画功能将它们播放起来。 以下是一个示例程序,它使用了LVGL的动画功能来播放一个PNG图像序列,以模拟一个视频播放器: ```c #include "lvgl/lvgl.h" #include "lv_png.h" #define FRAME_COUNT 60 static lv_anim_t anim; static lv_obj_t * img; static void animation_cb(lv_anim_t * a) { static int i = 1; char path[64]; if(i > FRAME_COUNT) { i = 1; } snprintf(path, sizeof(path), "S:/frames/frame%03d.png", i); lv_png_decode_file(path, &img->fn); lv_obj_invalidate(img); i++; } void gui_init(void) { lv_init(); lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.disp_flush = my_disp_flush; lv_disp_drv_register(&disp_drv); lv_obj_t * scr = lv_obj_create(NULL, NULL); lv_disp_load_scr(scr); img = lv_img_create(scr, NULL); lv_obj_set_size(img, 800, 480); lv_anim_init(&anim); lv_anim_set_time(&anim, 1000 / FRAME_COUNT); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)animation_cb); lv_anim_set_repeat_count(&anim, LV_ANIM_REPEAT_INFINITE); lv_anim_start(&anim); } int main(void) { gui_init(); while(1) { lv_task_handler(); } } ``` 这个程序假设你已经将视频分解成了60帧的PNG图像序列,并将它们保存在一个名为"frames"的文件夹中。它使用了LVGLPNG解码功能来加载PNG图像,并将它们显示在一个LVGL图像对象上。它还使用了LVGL的动画功能来定期更新图像对象,以模拟视频播放器的播放效果。 请注意,这只是一个示例程序,你需要根据你的具体需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值