lvgl修改图片大小上限

问题描述

在lvgl中读取图片文件时,被读取的图片具有上限,也就是2048像素。这会造成两个非预期的结果:

  1. 超过2048像素的部分会被裁去。
  2. 表示图片的结构体lv_img_t中的wh变量值是图片像素被2048求余。例如,当一个图片高为2048像素时,h的值被赋值为1。此时如果使用lv_img_set_offset_y函数修改图片偏移量,lvgl会以1作为图片高度进行偏移量的计算。

解决办法

解决办法是修改项目目录下的./lvgl/src/draw/lv_img_buf.h文件中的lv_img_header_t结构体。其中的wh成员限制了图片的上限。图片的高宽上限分别为2h2^h2w2^w

例如将w和h修改为13时:

1
2
3
4
5
6
7
8
9
10
11
typedef struct {

uint32_t cf : 5; /*Color format: See `lv_img_color_format_t`*/
uint32_t always_zero : 3; /*It the upper bits of the first byte. Always zero to look like a
non-printable character*/

uint32_t reserved : 2; /*Reserved to be used later*/

uint32_t w : 13; /*Width of the image map*/
uint32_t h : 13; /*Height of the image map*/
} lv_img_header_t;

此时图片高宽上限为8192像素。


lvgl修改图片大小上限
https://buttering.github.io/EasyBlog/2024/01/09/lvgl修改图片大小上限/
作者
Buttering
发布于
2024年1月9日
许可协议