2 Star 3 Fork 1

稀风/LVGL

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
JPEG图片组件.md 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
稀风 提交于 2024-04-26 22:38 . 新增:GIF动图组件

JPEG图片组件

  • JPEG 是全彩和灰度图像的标准压缩方法,JPEG 用于压缩 “真实世界”的景象、线条画、卡通,其他非现实图像并不是其强项。JPEG 会有损耗,意指输出图像与输入图像并不完全相同,因此,如果需要达到完全相同的输出位,则不能使用 JPEG。不过,对于常见的照片图像,可以得到非常好的压缩级别。LVGL 的 JPEG 解码库的原理就是将图片如何压缩为字节流以及重新解码为图片的过程。

启用JPEG解码库

  • 使用 LVGL JPEG 解码库之前,必须在 lv_conf.h 文件启用 LV_USE_SJPG。如果该宏定义设置为 1,则启用 JPEG 解码库,否则不启用该解码库。

LVGL 官方对 JPEG 解码器概述

  • 该解码库支持常规 jpg 和自定义 sjpg 格式。

  • 解码普通 jpg 会占用整个未压缩图像内存(建议用于具有更多 RAM 的设备)。

  • sjpg 是基于“普通” JPG 的自定义格式,是为 lvgl 专门制作的。

  • sjpg 是“ split-jpeg”,它是一堆带有 sjpg 标头的小 jpeg 片段。

  • sjpg 大小将几乎与 jpg 文件相当,或者可能稍大。

  • 从磁盘(读取)和 c 数组读取实现。

  • 如果在缓存中可用,则 SJPEG 帧片段缓存可实现行的快速获取。

  • 默认情况下,sjpg 图像缓存为图像宽度 * 2 * 16 字节(可以修改)。

  • 当前仅支持 16 位图像格式(可做)。

  • JPG 和 SJPG 图像只解码所需的部分,因此不能缩放或旋转

  • LVGL 解码库支持三种读取 jpeg 方式,这三种方式如下所示:

    • 将 JPG 转换为 C 数组,使用在线图片软件转换即可,注意:Color format = RAW, output format = C Array 选项配置。
    • SJPG 图片格式读取,这类不是我们涉及的领域,但是我们 MCU 可以读取这类型的图片格式,SJPG 图片格式使用 JPG 图片经过 python3 和 PIL 库进行转换。
    • 直接使用 LVGL 文件系统读取 SD 卡路径下的 jpeg 图片。

代码实战

  • 示例代码:
    // 图片源在 doc\tmp\examples\libs\tjpgd 路径下
    lv_obj_t* img = lv_img_create(lv_scr_act());
    lv_img_set_src(img, "0:img_lvgl_logo.jpg");
    lv_obj_center(img);
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/thin-wind/lvgl.git
git@gitee.com:thin-wind/lvgl.git
thin-wind
lvgl
LVGL
main

搜索帮助

246c6175 1850385 950819b3 1850385