提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
lvgl v8(https://lvgl.io/tools/imageconverter)在官网可以把图片直接生成bin或c文件:
但是lvgl v9(https://lvgl.io/tools/imageconverter_v9)版本目前官方网站没有把png图片直接生成bin接口,只能生成c的文件,如果要生成bin文件的话,就要使用v9版本官方给出的pythonimage.py脚本进行转换,下面将使用官方给出的脚本进行png图片转换为bin文件的操作(如果原图不是png图片,请使用window自带的画图或其他软件转换为png图片):
提示:以下是本篇文章正文内容,下面案例可供参考
一、要使用到的工具
1.要安装python3 (注意把python3加入到环境变量中)
二、操作步骤
1.进入你下载下来lvgl源码的\lvgl\scripts文件夹,在该文件夹下打开cmd命令窗口输入如下指令:python LVGLImage.py,并根据提示安装对应的module(如图1,2,3步骤)或者直接在cmd 命令依次安装如下两个模块:
pip3 install pypng和pip3 install lz4:
重复以上步骤直到出现如下图,到这一步就完成执行python脚本所需要的环境:
上图解释了脚本的传参,如下(跟v8转换图片界面要填的参数类似,非深究可以不用看):
LVGLImage.py [-h] [–ofmt {C,BIN,PNG}] [–cf {L8,I1,I2,I4,I8,A1,A2,A4,A8,ARGB8888,XRGB8888,RGB565,RGB565A8,ARGB8565,RGB888,AUTO}]
[–compress {NONE,RLE,LZ4}] [–align [byte]] [–background [color]] [-o OUTPUT] [-v]
input
参数详解
-h, --help: 显示使用脚本的帮助信息。
–ofmt {C,BIN,PNG}: 指定处理后图像的输出格式。
C: 作为C源代码(数组)输出。
BIN: 作为二进制文件输出。
PNG: 作为PNG图像输出(可能用于调试)。
–cf {L8,I1,I2,I4,I8,A1,A2,A4,A8,ARGB8888,XRGB8888,RGB565,RGB565A8,ARGB8565,RGB888,AUTO}
选择图像转换的颜色格式。
选项包括不同位深度和色彩模式,如L8(8位灰度)、I1(1位索引色)、ARGB8888(32位真彩色带透明)、RGB565(16位色彩),以及AUTO自动选择合适的格式。
–compress {NONE,RLE,LZ4}:
确定用于图像数据的压缩方法。
NONE: 无压缩。
RLE: 行程长度编码,对有大块单一颜色区域的图像效果好。
LZ4: LZ4压缩算法,平衡了压缩速度和压缩率。
–align [字节]: 指定输出数据对齐到指定的字节边界,某些嵌入式系统对数据对齐有特定要求。
–background [color]:
设置图像填充或转换为非透明格式时透明像素的背景色。
-o 输出文件: 指定输出文件路径。
-v: 启用详细模式,在处理过程中提供更多信息。
input:输入文件:需要被处理的输入图像文件路径。
2.使用python脚本生成bin文件
根据上面的参数,在cmd中,直接使用指令通过lvgl脚本把png图片生成bin文件:
python LVGLImage.py --ofmt BIN --cf RGB565 --align 1 --compress NONE source.png -o out.bin
注意以上的命令cmd要在\lvgl\scripts目录下执行,上面的指令是对RBG565的屏幕生成的bin文件, source.png为你要转换png图片的目录,out.bin是你要生成文件输出的目录(注意这里是生成目录的),实例如图:
到这里就完成了使用lvgl官方脚本由png图片生成bin文件的操作,如果需要批量转换png的操作,需要借助bat脚本。
3.使用bat脚本批量转换图片
代码如下(示例):
@echo off
setlocal enabledelayedexpansion
set “sourceDir=image”
set “targetDir=image_bin”
set “pythonCmd=python”
if not exist “%targetDir%” mkdir “%targetDir%”
@REM 遍历当前bat脚本下的image文件夹,把里面的图片都转换为bin文件,并放到image_bin文件里面
for %%i in (“%sourceDir%*.png”) do (
echo Converting “%%i”…
%pythonCmd% E:\workspace\LVGL\sourceCode\lvgl\scripts\LVGLImage.py --ofmt BIN --cf RGB565 --align 1 --compress NONE “%%i” -o “%targetDir%%%~nxi”
)
echo All PNG files have been converted to BIN and saved in “%targetDir%”.
echo Copying .bin files to image_bin folder and removing subfolders…
@REM 把image_bin里面的子文件的bin提取到image_bin目录下,并删除子目录
for /D %%d in (“%targetDir%*”) do (
for %%f in (“%%d*.bin”) do (
copy “%%f” “%targetDir%”
)
rd “%%d” /S /Q
)
echo Cleanup completed. All .bin files are now in “%targetDir%” and subfolders removed.
pause
注意上面代码的使用方法(看懂的就不用管下面):
1.新建一个txt文件,并把上面代码复制进入,修改名称为lvglImage.bat文件
2.新建一个image文件夹,里面把要转换的png图片放进去
3.注意把上面代码里的这句E:\workspace\LVGL\sourceCode\lvgl\scripts\LVGLImage.py
替换为你自己lvgl\scripts\LVGLImage.py的具体路径
4.保存好后,双击一下lvglImage.bat就可以批量转换了
5.效果如图:
总结
提示:done