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成员限制了图片的上限。图片的高宽上限分别为 2 h 2^h 2h 2 w 2^w 2w

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

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像素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值