Files
2026-08-13 16:50:52 +08:00

72 lines
2.1 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
libjpeg-turbo 编解码并显示示例
===============================
本示例演示如何使用 libjpeg-turbo 库在嵌入式系统中进行 JPEG 图像的编码和解码, 并在 LCD 上显示。
.. tip:: **推荐使用原生 libjpeg API**
虽然 TurboJPEG API 设计更简洁,但在嵌入式平台上 **原生 libjpeg API 更稳定可靠**
**生产环境建议使用原生 libjpeg API** (参考 ``decode_to_rgb565````decode_to_rgb888_native`` 示例)。
功能特性
--------
- **JPEG 解码**: 支持 RGB888, RGB565, YUV420 输出
- **JPEG 编码**: 支持 RGB888 输入
- **API 支持**: 包含 TurboJPEG API 和 原生 libjpeg API 示例
注意事项
--------
为了最佳兼容性和性能,建议 JPEG 图片满足以下条件:
1. **Baseline JPEG** (非 Progressive
2. **移除元数据** EXIF、XMP 等)
3. **色度采样**: 4:2:0 或 4:4:4
使用指南
--------
本示例包含辅助脚本,用于优化 JPEG 图片并将其转换为 C 头文件。
1. **准备图片**: 使用 ``strip_metadata.py`` 清除元数据
.. code-block:: bash
python3 tools/strip_metadata.py input.jpg output_clean.jpg
2. **生成头文件**: 使用 ``bin2header.py`` 转换为 C 数组
.. code-block:: bash
python3 tools/bin2header.py output_clean.jpg src/sample_jpeg.h sample_jpeg
3. **编译运行**:
.. code-block:: bash
./build.sh
cskburn -C arcs -s /dev/ttyACM0 -b 3000000 0x0 ./build/arcs.bin
关键函数说明
------------
- ``decode_to_rgb565()``: 使用原生 API 解码为 RGB565。**生产环境推荐**,内存占用低,稳定性高。
- ``decode_to_rgb888_native()``: 使用原生 API 解码为 RGB888。**生产环境推荐**
- ``decode_to_rgb888()``: 使用 TurboJPEG API 解码为 RGB888。仅供参考。
- ``decode_to_yuv420()``: 使用 TurboJPEG API 解码为 YUV420。仅供参考。
- ``encode_rgb_to_jpeg()``: 使用 TurboJPEG API 将 RGB888 编码为 JPEG。
参考资料
--------
- `libjpeg-turbo 官方文档 <https://libjpeg-turbo.org/>`_
工具脚本
--------
.. toctree::
:maxdepth: 1
tools/README