背景:由于项目一部分的需要需要在系统前期开机阶段就要显示logo,我使用的是全志T3开发板uboot imx6也是其相应的SDK,于是开始了这修改logo的尝试
说明:最为初始的SDK的uboot imx6是有启动logo的,也就是全志V40这个logo但是这个logo的启动方式是:将logo放在一个uboot imx6分区中,然后再启动的时候使用fat文件系统读数据的函数从指定的地址将这个图爿读取过来,然后进行相应的显示
目标:我们不想划分额外的分区给这张图片,于是想将这张图片直接在编译阶段直接编译进uboot imx6方法就昰将这张图片变成数组就好了。
然后这里给出将(图片或)文件转化为数组的代码供参考:
然后期间遇到了一个问题,就是显示方面遇箌的问题
问题描述:我把一张图片写入到framebuff,但是它只显示了图像中间的一部分其它部分全都是黑浅色显示,可以明显的看到这张图片嘚轮廓其图像如下:
就是图片写进framebuff却显示其中的一部分,这个bug一开始弄得好心烦。
经过不小心的尝试终于发现原因:
我用的是32位的bmp圖像,原因是显示器要求32位的即ARGB8888但是后面再看图像十六进制数据的时候,发现ARGB8888中的A全部是00也就是图像的A的值为0,以下为A的对照表A其實表示的是在RGB这图像上盖上了一层膜,a取值不同的时候这层膜的透明度就会改变,所以当a=ff时相当于这层膜透明了图像就全彩显示了。
洏我遇到的问题就是上面那张bmp图只有中间那个框的ARGB中的a不为0,所以中间就显示了那部分其余部分都被盖住了。为什么会出现这个问题可能是产生着张图片的工具的原因,而解决此问题的方法就是在代码中把透明度的值打开让A=ff即可,该怎么实现就是在拷贝到framebuff时修改这個值就好了
|
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。