文档说明
本文档以SC806-CN-00-04为例(8909平台),描述如何定制LK阶段开机logo图片。
LOGO图片要求
图片后缀为 .png,颜色位深8/24/32都可以。
图片分辨率和屏的实际分辨率保持一致。
我们EVK板上的屏分辨率是7201280,这里就以一个720*1280的logo.png文件为例。
演技满分的美女,有认识的不。
环境准备
高通提供了制作开机LOGO的脚本文件 device/qcom/common/display/logo/logo_gen.py
如果这个路径下没有文件,就新建一个。
把上面图片命名为logo.png,也放在同一路径下,好,让我们开始激动人心的第一步,制作LOGO文件。
执行:python logo_gen.py logo.png
what? 出错了。
看提示,缺少PIL module。需要执行如下指令:
$sudo apt-get install python-imaging
然后再次尝试 python logo_gen.py logo.png,这次很顺利,生成了splash.img。把这个文件拷出来,放在win环境。
烧录splash.img
使用fastboot 将 splash.img 烧录到模块的 splash分区并重启:
fastboot flash splash splash.img
fastboot reboot
开机效果
很不幸,屏幕上方有花屏的现象,而且显示的界面看上去也不是我们要更换的图片内容。
但至少说明烧录splash.img对画面有影响了。
修改脚本文件
那么问题出在哪,打开 logo_gen.py文件看看。
把 SUPPORT_RLE24_COMPRESSIONT 值改成0(中间过程很艰辛,不要问我为什么改这里)
修改之后的脚本文件,另命名为 logo_gen_800.py,好区分。
执行:python logo_gen_800.py logo.png
好,又出错了。
Exception: tostring() has been removed. Please call tobytes() instead
百度、google这个错误行,似乎和Pillow库的版本有关,解决办法五花八门。有说要重装Python,有说要重装低版本Pillow的
经验证,最靠谱最简便的解决办法:
修改logo_gen_800.py,增加一行 Image.Image.tostring = Image.Image.tobytes,如下图所示:
再执行 python logo_gen_800.py logo.png,这次没报错了,把生成的splash.img再烧录试试。
我们的大美女出来了
总结
- 安装 apt-get install python-imaging
- 准备一张和屏分辨率相同的logo.png
- 使用 logo_gen.py 或者 logo_gen_800.py 生成 splash.img,不同软件基线的版本似乎要使用不同的脚本文件。
- 烧录splash.img