因旧项目切图资源缺失的问题,现需要将emwin使用格式的c文件图库资源与lvgl使用格式c文件进行数据转换,针对两种数据格式的转换,现做如下总结,
现旧项目中使用的emwin版本为 而 STemWin 是SEGGER 授权 给 ST 的 emWin 版本,所需转换图片会使用位图转换器进行转换生成带Alpha通道BMP565格式的.c文件。
常用的Alpha通道使用有两种,其中一种使用像素16比特存储的位图,其数据组成为BMP555加1bit位的Alpha通道,在这种情况下,它要么表示透明要么不是,因为阿尔法比特只有0或1两种不同表示的可能性。另一种是使用32个比特存储的位图,每8个比特表示红绿蓝,和阿尔法通道。在这种情况下,就不光可以表示透明还是不透明,阿尔法通道还可以表示256级的半透明度,因为阿尔法通道有8个比特可以有256种不同的数据表示可能性。emwin及lvgl两类GUI使用的均是第二种。
emwin:位图资源格式为65536 colors + 8 bit alpha channel
Lvgl:位图资源格式为 65536 colors + 8 bit alpha channel
两类GUI位图格式均为32bit数据格式,值得注意的是lvgl在读取切图资源时,其数据格式并非常用的5bitR+6bitG+5bitB的数据排列格式,而是BRG排列,故再进行数据转换时需注意,同样的是,emwin格式下切图资源数据格式也很有意思,他的颜色通道的数组均进行了取反操作,例如RGB565格式下的0xFFFF应该展示为黑色像素点,但是在emwin格式读取下表现却是白色像素点。故在进行格式转换时对以上几点要注意。