lvgl源码转图片
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_baad803c/lvgl-c-image-viewer
技能介绍
解决嵌入式 GUI 调试的视觉盲区
在 LVGL(Light and Versatile Graphics Library)等嵌入式 GUI 开发中,图片资源通常被直接编译为包含原始字节数组的 C 源码文件(如 v8 版本的 lv_img_dsc_t 或 v9 版本的 lv_image_dsc_t 结构体)。这意味着在没有硬件在环的情况下,工程师无法直观地看到图片的实际渲染效果。当遇到颜色错乱、尺寸异常或数据损坏等显示问题时,单纯依靠代码审查或反复烧录固件来排查极为低效。该技能通过 Python 脚本直接解析 C 源码中的像素数据,将其渲染为标准 PNG 图像,让你在 PC 端即可完成视觉验证与资产提取。
核心能力与解析工作流
该工具的核心在于将静态的 C 数组还原为可视化的图像资源,主要工作流分为三步:
- 结构体自动识别:脚本能自动检测文件中使用的是 v8 还是 v9 的图像描述符结构体,无需手动指定版本。
- 字段与像素提取:解析并提取
width、height、color_format和stride等关键头部信息,随后从data数组中提取原始字节数据。 - 多格式色彩转换:支持 RGB565、RGB888、ARGB8888、XRGB8888、RGB565A8 等多种色彩格式,以及 1/2/4/8-bit 的索引色和 Alpha 通道格式。同时,脚本严格遵循 LVGL 的小端序内存布局(例如 RGB888 在内存中为 B,G,R 顺序),确保颜色还原准确。
适用边界与技术注意事项
尽管该工具覆盖了绝大多数常见格式,但在复杂场景下仍需注意以下边界:
- True Color 的推断限制:对于
TRUE_COLOR格式,脚本通过data_size / (width * height)推断每像素字节数。若结果存在歧义,默认按 RGB565 处理,此时需通过--format参数手动覆盖。 - 调色板的色彩深度依赖:v8 版本的索引调色板条目大小取决于项目的
LV_COLOR_DEPTH(默认 16 位,即 2 字节),而 v9 版本固定为 4 字节(BGRA)。若调色板解析异常,可使用--color-depth调整 v8 的解释方式。 - RAW 格式不可转换:
LV_IMG_CF_RAW等完全由用户自定义的原始数据格式无法被解析,脚本遇到此类格式会直接报错。 - 跨文件数据引用:如果
.data字段引用了在其他.c文件中定义的变量而非内联数组,脚本会自动在同目录的其他源码中搜索该变量定义。
使用场景
- 固件还未烧录、手头没有硬件在环时,需要确认某个 `.c` 图片文件在屏幕上的真实渲染效果
- LVGL 项目出现颜色异常或尺寸不对的显示 bug,需要在编译前快速把源码中的像素数据转成 PNG 对比排查
- 接手一个包含大量图标资源的 LVGL 固件工程,需要批量把目录下所有 `.c` 图片导出为 PNG 供设计或产品预览
- 源码中图片数据分散在多个 `.c` 文件里,需要连同跨文件引用的变量一起解析并还原成完整图像
适合人员
- LVGL 嵌入式 GUI 开发者,需要在没有硬件的情况下验证 `.c` 图片资源的显示效果
- 嵌入式固件工程师,需要在编译烧录前快速定位图片渲染相关的显示异常
- 资源整合或固件维护人员,需要把遗留 LVGL 工程中的图片资源批量提取为可预览文件
- LVGL 源码贡献者或审查者,需要核对 v8 与 v9 不同结构体定义下图像数据的完整性