想要在TFT彩屏上显示图片文字,需要克服几个问题:
1.获取图片的RGB数据,供TFT使用。
TFT彩屏一般需要的是图片的点阵数据,但是只有BMP格式的文件才有点阵信息,需要自行提取。常见的图片是JPG,用PS转一下吧。
BMP图片常用的是RGB888格式,即每个像素用三个字节表示,想要提取需要了解一下BMP文件格式,可以用二进制方式读取文件,偏移到RGB数据的位置后,读取到RGB数据。
2.RGB数据格式与TFT屏需要的数据不符
TFT需要的是RGB565的点阵信息,BMP一般是RGB888的模式,这时需要把RGB888转换到RGB565。
转换方法就是取R的高5位,G的高6位,B的高5位,组合成一个新的2个字节,共16位来表示一个像素。
其实可以用PS转换一下,再用二进制方式读一下RGB565的数据。
这时你会发现显示的图片是上下,左右颠倒的。再调整。当然也可以调TFT的驱动,调了驱动,再显示文字又倒了。。。
也可以自己转换,小屏还可以,240X320的屏,我转了一下,PC要6秒,单片机就算了。
3.可以使用一些网友分享的固件。
这些固件可以显示文字,图片,可是只能用他们的固件,他们不更新,你用不了新固件。
而且用人家的现成的,我啥也折腾不了,更不知道人家怎么实现的,想实现一个自己的效果,不知道改哪,也不能改,人家在固件里。
4.显示HZK16,ASC16,HZK32
用framebuf是比较高效的,但是只能是默认的小字体,想用16X16的HZK16,格式不对。
可以写个程序,按点阵信息扩展一个RGB565的framebuf,光编个程序就要想半天,调半天,关键转换效率肯定喜人。
5.总结:
想要实现TFT屏上显示图片文字,在不用别的固件的情况,要踩很多坑,而且很多坑基本爬不出来。
用别的人固件,也只能在某些屏上显示文字,能显示图片的更少。主要还是不灵活。
关于TFT屏显示图片文字的其他方法,我还没有看到一个完美的方案,不知道大家是怎么解决这个问题的。
本帖最后由 lemon1394 于 2022-9-25 21:30 编辑