1) bmp图片的特点 :没有压缩--》54字节头+像素颜色信息(BGR)。每个像素点占3字节
图片显示原理:图片是由一个个像素点组成的,每个像素点都有自己到颜色值,颜色值在计算机中采用RGB(红绿蓝三原色)表示
显示图像就是把图片中每个像素点填充到液晶屏对应的位置(位置不要错乱就行了)
液晶屏:每个像素点占4个字节,分别表ARGB的值, A表示透明度
2)具体实现思路
第一步:打开你要显示的800*480大小的bmp图片
open()
open("/dev/fb0")//打开开发板液晶屏的驱动
第二步:读取bmp图片的像素点的颜色值(颜色值大小如何计算)
char bmpbuf[800*480*3]
lseek(跳过起始位置的54字节)
read(bmpbuf) //800*480*3字节,从55字节开始读取
第三步:把读取的颜色值填充(写入)到开发板的液晶屏上
由于开发板的液晶屏每个像素点占4个字节,跟bmp图片像素点占用的字节数不匹配(顺序也不对)
思路:可以通过左移加位或运算拼接数据
write()
第四步:关闭图片和液晶屏
3)需要解决的问题
问题一:write显示bmp图片,效率低,显示速度慢,不流畅 --》内存映射mmap
问题二:任意位置显示任意大小的bmp图片 --》读bmp头部信息(54字节)获取宽、高
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>