【平头哥Sipeed LicheeRV 86 Panel测评】 7 - lvgl 图片颜色显示不对的解决方法
[复制链接]
在Lichee RV86上使用lvgl做显示时,发现图片的颜色显示不对,试了以下方法,都没有解决问题。
- 图片的格式,从png换成jpg
- 图片转换格式,将转换格式从"True color" 换成 "True color with alpha"
- 更改图片控件的背景色、透明度
- 关闭默认启动的waft程序
因此想到用三基色的图片,观察一下到底颜色错在了哪里。下图为原图和显示的图片
对比上面的两个图片,发现蓝色和红色的位置正好反了,因此造成了显示颜色的不正确。
所以我尝试在转换图片的时候,勾选上 "Output in big-endian format"生成的图片,发现就能显示正确的颜色了(见下图)。
图片转换的网址为:https://lvgl.io/tools/imageconverter
造成这种错误的根源是数据的大小端的设置不对。只改变生成图片的方式并没有在根本上改变系统颜色不对的问题。在调用颜色的函数时,显示的颜色仍然会是错误的。
我没有在lvgl的库中找到设置大小端的方式,而修改"lv_conf.h"的"#define LV_BIG_ENDIAN_SYSTEM 0 " 又会造成新的编译错误。因此就去修改lvgl的刷新函数,手动的将红色与蓝色的数据互换一下。方法如下:
- 在fb_dev.c文件中,修改函数"void fbdev_flush(lv_disp_drv_t drv, const lv_area_t area, lv_color_t * color_p)",加上红框中的代码。
至此屏幕颜色显示正常了。
|