OpenEdv-开源电子网

 找回密码
 立即注册
查看: 2793|回复: 0

LVGL V8 图片解码库移植!

[复制链接]

1061

主题

1072

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4407
金钱
4407
注册时间
2019-5-8
在线时间
1196 小时
发表于 2021-10-16 11:40:22 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2021-11-1 10:31 编辑

以下文章摘自微信公众号——开源电子网《LVGL V8 图片解码库移植!》
更多技术文章,请扫下方二维码关注

开源电子网,扫码2222222.png



LVGL V8 图片解码库移植


一、BMP解码库

LVGLV8读取我们的BMP图片之前,我们必须要移植BMP的解码库,该解码库可以去LVGL官方进行下载。https://github.com/lvgl/lv_lib_bmp

然后呢,我们必须准备一个已经移植好的LVGL工程,该工程具备文件系统驱动。然后把解码库移植到我们的工程中,如图所示:

1.png


其次我们打开修改lv_bmp_c文件,找到bmp_dsc_t结构体,我们修改该结构体:

2.png

在lv_bmp_c文件,找到staticlv_res_t decoder_read_line()函数,并把这个函数修改以下源码:(注意TFT的颜色深度是16位的,如果想要32位自己转换)

3.png

4.png
5.png

代码测试:


6.png

二、JPEG 解码库

接下来我们移植LVGLV8 JPEG解码库

前期的准备工作:

   ●官方下载lvgl 解码库

(https://github.com/lvgl/lv_lib_split_jpg)。

   ●具有文件系统的工程。

1.打开文件lv_sjpg.h文件,表明使用文件系统读取图片源。


7.png

2.在lv_conf.h文件,宏定义LV_BIG_ENDIAN_SYSTEM,小端模式(0)

8.png

3.如果编译工程出现以下错误:


9.png

请在lv_sjpg.h文件首部前面添加以下源码:

  1. #if  defined (__CC_ARM)

  2.      #pragmaanon_unions

  3. #endif
复制代码

4.在lv_sjpg.c中找到函数lv_fs_seek,我们编译会发现这个函数缺少第三个形参,我们在这个函数添加LV_FS_SEEK_SET,这个lv_sjpg.c文件所有的lv_fs_seek函数都要添加

5.lv_sjpg.c中找到宏定义LV_BIG_ENDIAN_SYSTEM,默认是#ifdeLV_BIG_ENDIAN_SYSTEM 修改成#ifLV_BIG_ENDIAN_SYSTEM

实战演习:

10.png

三、PNG解码库


接下来我们移植一个LVGLV8 的PNG解码库,该解码库主要读取PNG图片。

前期准备工作:

   ●在官方下载LVGL V8 PNG解码库

(https://github.com/lvgl/lv_lib_png)

   ●具有V8文件系统驱动的工程

把该解码库移植到我们工程中,如以下图所示:

11.png

然后添加PNG解码库的文件路径(自定义添加)

1.我们找到在lodepng.h文件中,定义宏定义

   LV_PNG_USE_L_FILESYSTEM:

12.png

2.V8的文件系统没有提供获取的大小的函数,所以我们需要自己编写一个获取文件大小的函数:如以下源码所示:

13.png

3.我们找到lodepng.c文件,找到lodepng_malloc()函数,把alloc()换成lv_mem_alloc(size)

4.在lodepng.c文件,找到lodepng_realloc()函数,把realloc()替换程lv_mem_realloc(ptr,new_size)

5.在lodepng.c文件,找到lodepng_free()函数,把free()替换成lv_mem_free()

6.然后在lodepng.c文件找到lodepng_file_size()函数,修改以下源码:

14.png

7.最后在lv_png.c文件中把全部free()函数替换成lv_mem_free()。


实战演习:


15.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则

关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 07:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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