Open XuBovey opened 2 years ago
我没有进行具体的测试,请问您的上一个pr是不是已经修复该问题了? 或者说,您期待的正确输出是什么。
没解决。 这里最后两行的0xFF,对应的是2个像素,,是上面的第15行,应该是第0行,也就是应该是0x00才对。看代码好像用了算法计算得到的。
@XuBovey 原因应该在这里, P 模式后获取像素只有 RGB 格式, 没有 ALPHA 通道数据, 所以脚本补 0xFF, 但这会导致不透明像素 (0, 0, 0, 0) 和黑色(0,0,0, alpha) 无法区分.
for i in range(palette_size):
if i < real_palette_size:
c = getColorFromPalette(real_palette, i)
if self.cf_palette_bgr_en == 1:
c = [c[2 - i] for i in range(3)]
self.d_out.extend(c)
self.d_out.append(0xFF)
else:
self.d_out.extend([0xFF, 0xFF, 0xFF, 0xFF])
这里可能可以转换成 RGBA 格式不必转成 P 模式, 然后使用 set() 获取不重复的颜色, 再按色彩值简单排序一下.
@XuBovey 原因应该在这里, P 模式后获取像素只有 RGB 格式, 没有 ALPHA 通道数据, 所以脚本补 0xFF, 但这会导致不透明像素 (0, 0, 0, 0) 和黑色(0,0,0, alpha) 无法区分.
for i in range(palette_size): if i < real_palette_size: c = getColorFromPalette(real_palette, i) if self.cf_palette_bgr_en == 1: c = [c[2 - i] for i in range(3)] self.d_out.extend(c) self.d_out.append(0xFF) else: self.d_out.extend([0xFF, 0xFF, 0xFF, 0xFF])
这里其实可以转换成 RGBA 格式不必转成 P 模式, 然后使用 set() 获取不重复的颜色, 再按色彩值简单排序一下
还有这个 python 源码有些不 python, python 和 C 代码各种嵌套不太好维护, 建议创建一个输出文件模板, 填充内部字段.
我写了一个新的工具,可以生成 v8 和 v9 的 bin
Python版本的这个工具写的比较早了,当时没有考虑那么多种情况,代码也不够优雅 😔
新的工具转换效率提升了 100~300 倍
@W-Mai 谢谢, 我去看看 👍🏻
@W-Mai 谢谢, 我去看看 👍🏻
目前还不支持生成 C 格式的 LVGL 图片,如果您有需要的话,我可以在最近更新一下!
如上得到的头文件中的内容。